32

Windows 7 に IE10 をインストールしたばかりで、AJAX 要求からの XML が互換性のある DOM ドキュメントになったことをうれしく思っていても、 のようなかなり基本的な機能document.evaluateまだサポートされていないことに気付きました。

さらに悪いことに、これらの XML はカスタム MicrosoftオブジェクトではないIXMLDocumentため、ノードはサポートselectNodesされselectSingleNodeなくなりました。結局、IE10 は DOM Level 3 XPath や MSXML Xpath をサポートしていないようです。

まじか、マイクロソフト?足りないものはありますか?

もちろん、 と を使用できますquerySelectorquerySelectorAll、下位互換性をかなり失いたくありません。

それ以外の場合でも、この行を使用して MSXML ドキュメントを要求できます。

try {xhr.responseType = "msxml-document";} catch(e) {}

ここで述べたように、しかし、IEでも標準のDOMドキュメントを最後に扱うことができればいいと思います。

では、IE10 で標準の DOM ドキュメントで XPath を使用する方法はありますか?

UPDATE 26/7/2013 IE11 はまだ安定していませんが、まだサポートしていませんdocument.evaluate。安定版リリースでサポートされない場合、サポートされるとは思えませ。言うまでもなく、これはばかげています。

querySelectorDOM ノードで/を使用できることAllはわかりましたが、IE9 以前ではサポートされていません。IE9 はまだ非常に一般的に使用されており、とにかく XPath はセレクターよりも強力です。

幸いなことに(そう言えば)、まだ設定できますxhr.responseType = "msxml-document"。一瞬、もうできないんじゃないかと思った...

UPDATE 2013 年 11 月 23 日IE11 は現在安定していますが、残念ながらdocument.evaluate. JSON やその他の軽い表記形式が優先され、重い XML ドキュメントが Web アプリケーションで使用されることが少なくなってきているため、これは問題ではなくなりつつありますが、それでも問題はありません。

プロパティを設定してresponseTypeも従来の XML ドキュメントが引き続き提供されるため、何も失われることはないと思います。ただし、それがIE12に当てはまるかどうかはわかりません。

UPDATE 15/8/2015今はばかげているように聞こえますが、Edge がサポートするようになりdocument.evaluateました。ちょうど (ほぼ) すべてがデータ交換のために JSON に切り替わったときです。まあ、遅刻しないよりはましだと思います。

4

2 に答える 2

15

はい、IE にはまだ XPath サポートがありません =/。

私にとって、すべてのブラウザーで使用する最も信頼できる方法document.evaluateは、悲しいことに、ライブラリを使用することです。

これはWicked Good XPathと呼ばれ、古い優れたJavaScript-XPathライブラリーを Google が最近書き直したものです。私はリリース以来 Wicked Good XPath を使用しており、非常に快適に使用しています (ネイティブの XPath サポートほどではありませんが、それでも)。

于 2012-11-23T10:30:12.067 に答える