1

この小さなJavaScriptスニペットのコードは、Windows8をインストールしてから私を怒らせます

xmlDoc=http_request.responseXML.documentElement;
var nodes = xmlDoc.selectNodes('/rfp_object/category');

その瞬間まで、すべてが何年も正常に機能していましたが、Windows 8を使用すると問題が発生します。エラーは次のようになります。プロパティまたはメソッドselectNodesは、このオブジェクトでサポートされていません。

Chrome、Firefox、Safari、Windows Vistaでは、私が期待していたことを実行します。しかし、Windows8ではそうではありません。さらに独特なのは、XPサーバーでの開発では正常に機能しますが、WindowsServer2008では本番環境では機能しないことです。

selectNodesをgetElementsByTagName('category')に変更すると、この状況ではうまく機能しますが、他の機会にデータをフィルター処理する必要があるため、オプションではありません。

それで、以前のようにWindows8ユーザーが機能するようにするには、何をする必要がありますか。どんな助けでも大歓迎です。

ローレンス

4

1 に答える 1

0

IE 10 は IE XML DOM ドキュメントを作成すると思いますがresponseXML、以前のバージョンの IE では MSXML XML DOM ドキュメントです。メソッドselectSingleNodeとメソッドselectNodesは MSXML DOM API の一部ですが、IE DOM API の一部ではありません。IE が DOM ドキュメントの XPath サポートを提供しているとは思わないので、次responseXMLの行に沿って MSXML DOM ドキュメントに変換するかどうかを決定する必要があります。

var doc = new ActiveXObject('Msxml2.DOMDocument.6.0');
doc.loadXML(new XMLSerializer().serializeToString(http_request.responseXML));

次にselectNodesdoc変数で使用するか、getElementsByTagName や querySelector などの IE が提供するメソッドで探しているものを見つけることができるかどうかを確認するか、https://github.com/ilinskyのような XPath の Javascript 実装かどうかを確認する必要があります。 /xpath.jsを使用すると、必要なクエリを記述できます。

于 2013-03-07T09:47:48.513 に答える