3

私はオンライン調査を設計しています。主な機能の 1 つは、質問が外部の XML ファイルに保存され、毎回ランダムな質問が読み込まれることです。私が持っているコードは Firefox では正常に動作しますが、Internet Explorer 8 でページを読み込もうとすると、「アクセスが拒否されました」というエラーが表示されます。問題をコードの次の部分に切り分けました。

//Import the XML File
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5*/
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

//Import XML
xmlhttp.open("POST","Personalized Tour/questions.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

特に、xmlhttp.open でエラーがスローされるようです。同様の問題について他のいくつかの Web サイトを調べたところ、IE8 のセキュリティ設定をトリガーしているある種のドメイン エラーがあったことを示唆しているようでした。これは事実ですか、それともそれ以上のものがありますか?

ご協力いただきありがとうございます。

4

1 に答える 1

0

IE では、xml doc で XPATH を直接使用できます。他のブラウザでは、xpath パーサーを作成してそれを行います。

したがって、すべての「主要な」要素を選択すると、次のようになります。

xmlDoc.selectNodes("//major")

しかし、その [0] インデックスセレクターを取得したら、次の方法でより効率的に実行できます。

xmlDoc.selectSingleNode("//major")

両方の結果はかなり異なります(パフォーマンスの向上以外)

selectNodes はノードのリストを返します (リストは dom 部分ではありません) selectSingleNode は最初のノードを返します (リストではありません)

ただし、次のような xpath を使用して、1 つのコマンドで最終的な選択を行うことができます。

xmlDoc.selectSingleNode("//major/*[1]/*[9]/*[0]")

/*[n] 表記は問題ありませんが、ノード名が一意であるか、両方の組み合わせである場合はノード名を使用できます

ノードがあれば、必要に応じて .noValue、.text、.textContent、.nodeName を追加できます

于 2012-04-21T02:46:39.653 に答える