【发布时间】:2016-09-07 00:29:52
【问题描述】:
我刚刚在我的 Windows 7 上安装了 IE10,我注意到,即使我很高兴来自 AJAX 请求的 XML 现在是兼容的 DOM 文档,像 document.evaluate 这样的相当基本的功能仍然是 /em> 不支持。
更糟糕的是,由于这些 XML不是自定义 Microsoft IXMLDocument 对象,节点不再支持 selectNodes 和 selectSingleNode。 最后,IE10似乎不支持DOM Level 3 XPath或MSXML Xpath。
说真的,微软?我有什么遗漏吗?
当然,我可以使用querySelector 和querySelectorAll,但我不想失去很多向后兼容性。
否则,仍然可以使用此行请求 MSXML 文档
try {xhr.responseType = "msxml-document";} catch(e) {}
如here 所述,但我认为最后在 IE 中处理标准 DOM 文档也会很好。
那么,有没有办法在 IE10 中将 XPath 与标准 DOM 文档一起使用?
UPDATE 26/7/2013 IE11 还不稳定,但它仍然不支持document.evaluate。如果它在稳定版本中不支持它,我怀疑它会永远支持它。不用说这是可笑的。
我知道你可以在 DOM 节点中使用querySelector/All,但是在 IE9 及更低版本中不支持,仍然很常用,而且 XPath 比选择器更强大。
幸运的是(如果你能这么说的话),你仍然可以设置xhr.responseType = "msxml-document"。有一瞬间我担心你不能再那样做了......
UPDATE 23/11/2013 IE11 现在很稳定,但遗憾的是,它不支持document.evaluate。随着在 Web 应用程序中越来越少使用重量级 XML 文档,转而支持 JSON 或其他轻量级符号格式,这已不再是一个问题,但仍然如此。
设置responseType 属性仍然提供遗留的XML 文档,所以我猜什么都不会丢失。不过,我不知道这是否适用于 IE12。
2015 年 8 月 15 日更新 现在听起来很荒谬,但 Edge 现在支持 document.evaluate。就在(几乎)一切都切换到 JSON 进行数据交换的时候。好吧,我想,迟到总比没有好。
【问题讨论】:
-
哇!只是谷歌了一下,你可能会有所收获。这将成为 #9678 没有人应该使用 IE 的原因!
-
我认为
querySelector/All在 IE9 中支持。 -
@torazaburo
querySelector/All支持 CSS 选择器语言。 XPath 是一种(更强大的)语言,用于选择/分析 *ML 文档中的节点。这篇文章的重点是质疑 XML 文档的跨浏览器选择器语言的存在。 -
我知道
querySelector/All是什么以及XPath 是什么。我只是指您帖子中的声明“但在 IE9 及更低版本中不受支持”。这是不正确的。它应该是“IE8 及更低版本”。我并不是说这会对这个问题或您的答案产生有意义的影响。 -
感谢您定期更新此问题的状态!
标签: internet-explorer xpath msxml xmldom dom3