2011-04-07 92 views
4

我必须使用HTML5/CSS3/JavaScript制作项目并使用XML作为数据提供者。 要求声明它必须与Internet Explorer,Firefox,Safari和Chrome兼容。 我在Firefox中开发,所以工作得很好。 Safari的工作原理也很棒,幸运的是它在新的IE9中完美运行。在Chrome中加载本地XML文件

我只是有问题让它在Chrome中运行。 由于Chrome似乎支持许多新的HTML5/CSS3功能,因此在该浏览器中运行它也不应该做太多工作。 唯一的问题是它拒绝加载XML文件,并且由于这是必需的,所以整个事情都不会加载。

在做了一些研究之后,我遇到了一些帖子,指出Chrome不允许您加载本地XML文件。 它应该脱机工作,而不使用Apache或任何东西,所以有什么办法仍然能够工作吗?

的代码我的XML取决于浏览器在那里我加载片段使用:

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ 
    // INTERNET EXPLORER 
     xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     try { 
      xmlDoc.async="true"; 
      xmlDoc.load("exercise1.xml"); 
     } catch(ex) { 
      alert("exception"); 
      alert(ex.message); 
     } 
    }else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
    // MOZILLA FIREFOX 
     // load xml file 
     xmlDoc=loadXMLDoc("exercise1.xml"); 
    }else if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
     // GOOGLE CHROME 
     // load xml file 
     // ???????? 
    }else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
     // OPERA 
     alert("Opera is not supported as of now"); 
    }else if (browser.toLowerCase().indexOf('safari') > 0){ 
    // APPLE SAFARI 
     // load xml file 
     xmlDoc=loadXMLDoc("exercise1.xml"); 
    } else { 
    // OTHER BROWSERS 
     // load xml file 
     xmlDoc=loadXMLDoc("exercise1.xml"); 
    } 

Firefox和Safari中使用外部JavaScript加载XML。 我不认为真的有必要在这里发布代码,因为它在这些浏览器中工作得很好。

也许我忽略了一些简单的,但我已经做了谷歌搜索的公平一点,并试图找到这里#2一些代码,我仍然不能得到它的工作..

回答

2

可以加载Chrome中使用XMLHttpRequest的XML文件,如下所示: (在Chrome 12.0.742.112上测试)。

function readxml() 
    { 
     xmlHttp = new window.XMLHttpRequest(); 
     xmlHttp.open("GET","test.xml",false); 
     xmlHttp.send(null); 
     xmlDoc = xmlHttp.responseXML.documentElement; 
    } 

这是在Chrome开发工具中看到的结果xmlDoc。

readxml() result

一定要在服务器上有一个有效的XML文档。

<?xml version='1.0'?> 

必须在XML的第一行,并检查标记前是否有空格。

+1

运行Chrome以使其工作时,您还需要使用--allow-file-access-from-files选项。 – 2011-09-29 05:49:12