我刚刚在我的 Windows 7 上安装了 IE10,我注意到,即使我很高兴来自 AJAX 请求的 XML 现在是兼容的 DOM 文档,但仍然document.evaluate
不支持一个相当基本的功能。
更糟糕的是,由于这些 XML不是自定义的 Microsoft对象,因此IXMLDocument
节点不再支持。最后,IE10 似乎不支持 DOM Level 3 XPath 或 MSXML Xpath。selectNodes
selectSingleNode
认真的,微软?有什么我想念的吗?
当然,我可以使用querySelector
and querySelectorAll
,但我不想失去相当多的向后兼容性。
否则,仍然可以使用这一行请求 MSXML 文档
try {xhr.responseType = "msxml-document";} catch(e) {}
如此处所述,但我认为最后在 IE 中处理标准 DOM 文档也会很好。
那么,有没有办法在 IE10 中将 XPath 与标准 DOM 文档一起使用?
更新 26/7/2013 IE11 还不稳定,但它仍然不支持document.evaluate
. 如果它在稳定版本中不支持它,我怀疑它是否会支持它。不用说这是荒谬的。
我知道你可以在 DOM 节点中使用querySelector
/ All
,但它在 IE9 及更低版本中不支持,它仍然很常用,而且无论如何 XPath 比选择器更强大。
幸运的是(如果你可以这么说的话),你仍然可以设置xhr.responseType = "msxml-document"
. 有那么一瞬间,我怕你再也做不到了……
更新 23/11/2013 IE11 现在很稳定,但遗憾的是,它不支持document.evaluate
. 随着重量级 XML 文档在 Web 应用程序中越来越少地使用 JSON 或其他轻量级符号格式,这已不再是一个问题,但仍然存在。
设置responseType
属性仍然提供遗留的 XML 文档,所以我猜什么都不会丢失。不过,我不知道这是否会适用于 IE12。
2015 年 8 月 15 日更新现在听起来很荒谬,但 Edge 现在支持document.evaluate
. 就在(几乎)一切都切换到 JSON 进行数据交换的时候。好吧,我想,迟到总比没有好。