我刚刚在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中是否有一种使用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中是否仍然如此。
更新15/8/2015:听起来现在有点荒谬,但Edge现在支持document.evaluate
。就在(几乎)所有数据交换都转换到JSON之后。不过,迟到总比不到好,我想。
querySelector/All
支持CSS选择器语言。XPath是一种(更强大的)语言,用于选择/分析*ML文档中的节点。本文的重点是质疑是否存在一种适用于XML文档的跨浏览器选择器语言。 - MaxArtquerySelector/All
和XPath是什么。我只是在提到你帖子中的声明“但它不支持IE9及以下版本”。这是不正确的。应该是“IE8及以下版本”。我并不是说这对于这个问题或你的答案有任何实质性的区别。 - user663031querySelector
也被IE8支持,但不适用于XML节点。IE10是第一个将XML作为标准DOM文档处理的IE版本。 - MaxArt