在Chrome中加载本地XML文件
问题描述:
我必须使用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一些代码,我仍然不能得到它的工作..
答
可以加载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。
一定要在服务器上有一个有效的XML文档。
<?xml version='1.0'?>
必须在XML的第一行,并检查标记前是否有空格。
运行Chrome以使其工作时,您还需要使用--allow-file-access-from-files选项。 – 2011-09-29 05:49:12