我正在嘗試編寫一個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