DOM Level 3的XPath的Internet Explorer中(DOM Level 3 X

2019-07-04 01:39发布

我刚刚安装在我的Windows 7的IE10,而且我发现,即使我很高兴,从AJAX请求个XML现在可以兼容DOM文档,就像一个相当基本的功能document.evaluate 仍然不支持。

更糟糕的是,由于这些个XML 不是定义Microsoft IXMLDocument对象,节点不支持selectNodesselectSingleNode了。 最后,似乎IE10不支持DOM Level 3的XPath或MSXML的XPath。

严重的是,微软? 是否有什么我失踪?

当然,我可以使用querySelectorquerySelectorAll ,但我不希望失去相当多的向后兼容性。

否则 ,人们仍然可以要求使用这条线MSXML文档

try {xhr.responseType = "msxml-document";} catch(e) {}

如规定在这里 ,但我认为这将是很好对付,最后,在IE标准DOM文档了。

那么,有没有在IE10使用XPath标准DOM文档的方法吗?

UPDATE 26/7/2013 IE11目前还不稳定,但仍然不支持document.evaluate 。 如果它不支持它在稳定的版本,我怀疑它永远不会支持它。 不用说,这是ridicolous。

我让你可以使用querySelector / All的DOM节点,但它不是在IE9和较低,有还是相当常用的支持,反正XPath是比选择更强大。

幸运的(如果你能说),你仍然可以设置xhr.responseType = "msxml-document" 。 有那么一刻我怕你不能再这样了......

UPDATE 23/11/2013 IE11是稳定的,但现在,可悲的是,它不支持document.evaluate 。 作为重量级的XML文档中使用越来越少,在网络应用程序支持JSON或其他光符号格式,这是成为一个问题较少,但仍。

设置responseType财产仍然提供传统的XML文档,所以没有什么损失,我猜。 我不知道这是否会为IE12留真实,虽然。

UPDATE 15/8/2015现在听起来很可笑,但现在边支持document.evaluate 。 就在(几乎)都切换到JSON进行数据交换。 嗯,迟到总比不到好,我猜。

Answer 1:

是的,仍然有在IE = /没有XPath支持。

对我来说,使用最可靠的方法document.evaluate在每一个浏览器,遗憾的是,通过一个图书馆。

这就是所谓的邪恶良好的XPath ,这是一个最近老良好的谷歌创作改写的JavaScript的XPath库。 我一直在使用邪恶的良好的XPath发布以来,并已真的舒服(当然,不如用原生XPath的支持,但仍然)。



Answer 2:

这是微软边缘积聚10240+部分: modern.ie:DOM 3级的XPath

在IE浏览器开发渠道,有一个内置您可以用它来进行预览:

  • 对于Windows 7 SP1 Internet Explorer开发频道

  • 为Windows 8.1 Internet Explorer开发频道

这是一个使用邪恶好,XPath的内部:

为了支持WGX不污染网页的情况下,我们创建了致力于WGX一个单独的,孤立的脚本引擎。 随着以WGX进行一些修改,对调用函数和访问成果提供了切入点,我们从页面的数据元帅隔离发动机和与WGX计算表达式。 启用WGX处理原生XPath查询,我们看到的网站在我们的新引擎遗漏的内容呈现现代Web眼前利益

现在,MSDN具有迁移指南,其建议如下:

在一般情况下,尝试除非你需要这样的XPath / XSLT的功能迁移到原生对象和API; 这可以通过传递来的responseText的DOMParser,而不是使用responseXML的VAR来完成:

如果MSXML的API仍然需要,功能检查可以被更新,以验证,以便选择正确的API接收节点的类型:

参考

  • 改善与DOM L3的XPath的互操作性
  • 原生XML对象类型和旧版网站
  • XMLHttpRequest的responseXML的IE10中预览版
  • 的DOMParser和XMLSerializer的在IE9测试版
  • 的DOMParser和XMLSerializer的演示
  • 如何将在XSL文件客户端脚本函数
  • 详细的文件API -微软边缘发展


文章来源: DOM Level 3 XPath in Internet Explorer