私が構築しているサイトはパッケージとしてユーザーに直接送信されることを目的としているため、「ファイル」プロトコルを介してXMLをロードするためのInternetExplorer8ソリューションを作成しようとしています。XMLHttpRequestを使用してこれを処理しようとしたときに経験したことはすべて、オンラインで読んだものをサポートしているようです。IE8のXMLHttpRequest実装はプロトコルを嫌うため、ActiveXObjectを使用して読み込みを処理する必要があります。
私はさまざまな人々の提案を試しましたが、responseTextフィールドにファイルの内容が入力されているため、最終的にファイルを正常に取得しているように見えるコードができました。ただし、XMLを保持することになっているresponseXML.xmlフィールド(またはそのテキスト表現、私が読んだドキュメントはどれも非常に明確ではありません)は常に空の文字列です。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バリデーターを使用して、このファイルが何らかの形で不正であるかどうかを確認しました。そうではない。