Max*_*Art 32 internet-explorer xpath msxml xmldom dom3
我刚安装IE10在我的Windows 7,而且我发现,即使我很高兴,从AJAX请求个XML现在可以兼容DOM文档,就像一个相当基本的功能document.evaluate
是仍然不支持.
更糟糕的是,由于这些个XML是不是定制的微软IXMLDocument
对象,节点不支持selectNodes
和selectSingleNode
了.最后,似乎IE10不支持DOM Level 3 XPath或MSXML Xpath.
说真的,微软?有什么我想念的吗?
当然,我可以使用querySelector
和querySelectorAll
,但我不想失去相当多的向后兼容性.
否则,仍然可以使用此行请求MSXML文档
try {xhr.responseType = "msxml-document";} catch(e) {}
Run Code Online (Sandbox Code Playgroud)
如规定在这里,但我认为这将是很好对付,最后,在IE标准DOM文档了.
那么,有没有办法在IE10中使用带有标准DOM文档的XPath?
更新2013年6月26日 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进行数据交换时.嗯,迟到总比没有好,我想.
Pet*_*ček 15
是的,在IE = /中仍然没有XPath支持.
对我document.evaluate
来说,遗憾的是,通过库可以在每个浏览器中使用最可靠的方式.
它被称为Wicked Good XPath,它是最近谷歌撰写的旧的JavaScript-XPath库的重写.自发布以来,我一直在使用Wicked Good XPath,并且对它非常满意(好吧,不像本机XPath支持那么多,但仍然如此).
它是Microsoft Edge build 10240+的一部分:modern.ie : DOM Level 3 XPath
在IE浏览器开发渠道,有一个内置您可以用它来进行预览:
它在内部使用了wicked-good-xpath:
为了在不污染网页上下文的情况下支持WGX,我们创建了一个专用于WGX的独立,独立的脚本引擎.通过对WGX的一些修改,它们提供了调用函数和访问结果的入口点,我们将数据从页面封送到隔离引擎并使用WGX计算表达式.通过启用WGX来处理本机XPath查询,我们可以看到网站在我们的新引擎中丢失内容以立即获得现代Web
目前,MSDN有一个迁移指南,建议如下:
通常,尝试迁移到本机对象和API,除非您需要XPath/XSLT等功能; 这可以通过将responseText传递给DOMParser而不是使用responseXML var来完成:
如果仍然需要MSXML API,则可以更新功能检查以验证收到的节点类型,以便选择正确的API:
参考
归档时间: |
|
查看次数: |
19335 次 |
最近记录: |