我正在尝试编写一个Internet Explorer 8解决方案,通过'文件'协议加载XML,因为我正在构建的网站旨在作为包直接发送给用户。我尝试使用XMLHttpRequest处理这件事的经历似乎支持我在线阅读的内容:IE8的XMLHttpRequest实现不喜欢该协议,因此我必须使用ActiveXObject来处理加载。JavaScript:ActiveXObject MSXML2.XMLHTTP在成功加载时不返回XML ...?
我已经尝试过不同的人的建议,最终得到的代码似乎是成功获取文件的,因为responseText字段中填充了文件的内容。但是,应该保存XML的responseXML.xml字段(或者它的文本表示,我读过的任何文档都不是很清楚)始终是一个空字符串。我如何配置ActiveXObject来正确加载XML?
作为一个奖励,有人可以解释一下,我应该如何使用加载的XML一旦它成功加载?我还没有找到解释这一点的任何文件。
这里是我的JavaScript:
function isIE() {
return navigator.userAgent.lastIndexOf('Trident') > 0;
}
// This block ensures that the XML request occurs in the same domain.
var path = document.location.href;
path = path.substr(0, path.lastIndexOf('/') + 1);
if (isIE() && location.protocol == 'file:') {
var xmlRequest = new ActiveXObject('MSXML2.XMLHTTP');
xmlRequest.open('GET', path + 'xml/shared.xml', false);
xmlRequest.onreadystatechange = useXML;
xmlRequest.send();
function useXML() {
if (xmlRequest && xmlRequest.readyState && xmlRequest.readyState == 4) {
alert(xmlRequest.responseText); // displays the file
alert(xmlRequest.responseXML.xml); // displays nothing
}
}
}
这里是我的XML文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<shared>
<page_title>
Test Page Title
</page_title>
</shared>
我用了W3Schools的XML验证检查这个文件是否在某种程度上畸形。不是这样。
不记得......但你确定,responseXML有一个“xml”属性? – kirilloid 2011-02-09 23:46:58
很确定IE不会为你提供XML,因为它认为它是不安全的。我之前编写了自己的XML解析器来处理文本。 (不要再问了,不要问!) - 有xmlToObject JS库在四处漂泊。 – mwilcox 2011-02-09 23:48:46