我必须使用HTML5 / CSS3 / JavaScript创建一个项目,并使用XML作为数据提供者。 要求声明它必须与Internet Explorer,Firefox,Safari和Chrome兼容。 我正在开发Firefox,所以工作得很好。 Safari也像对待一样,幸运的是它在新的IE9中也很完美。
我只是遇到了让它在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。 我不认为在这里发布代码是非常必要的,因为它在这些浏览器中运行得非常好。
也许我忽略了一些简单的事情,但我已经做了一些谷歌搜索,并尝试了一些在Stackoverflow上找到的代码,我仍然无法让它工作..
答案 0 :(得分:2)
您可以使用XMLHttpRequest在Chrome中加载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的第一行,并检查标记之前是否没有空格。