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
。安定版リリースでサポートされない場合、サポートされるとは思えません。言うまでもなく、これはばかげています。
querySelector
DOM ノードで/を使用できること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 に切り替わったときです。まあ、遅刻しないよりはましだと思います。