Windows 7 に IE10 をインストールしたばかりで、AJAX 要求からの XML が互換性のある DOM ドキュメントになったことをうれしく思っていても、 のようなかなり基本的な機能document.evaluateがまだサポートされていないことに気付きました。
さらに悪いことに、これらの XML はカスタム MicrosoftオブジェクトではないIXMLDocumentため、ノードはサポートselectNodesされselectSingleNodeなくなりました。結局、IE10 は DOM Level 3 XPath や MSXML Xpath をサポートしていないようです。
まじか、マイクロソフト?足りないものはありますか?
もちろん、 と を使用できますquerySelectorがquerySelectorAll、下位互換性をかなり失いたくありません。
それ以外の場合でも、この行を使用して 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 に切り替わったときです。まあ、遅刻しないよりはましだと思います。