我最近一直在使用XPath,并一直在寻找有关哪些浏览器支持XPath 2.0而没有太多运气的信息.我能找到的最好的是各种渲染引擎的查询技术比较表.
这清楚地告诉我Firefox和IE(两者的所有版本)都不支持XPath 2.0,但是Chrome,Safari等的其他渲染引擎呢?有没有人有这方面的信息或知道哪里可以找到它?
我的印象是所有最新的浏览器现在都使用XPath 2.当我使用lower-case()和uppser-case()(版本2中引入的功能)时,Chrome会抛出语法错误.然而,他们较旧的替代品translate()工作正常.
这是一个错误还是最新的Chrome实际上使用XPath 1?是否有命令/方法来找出XPath版本?
// Finds the element as expected.
$x('//h2/text()[. = "Delete"]')
// Doesn't find the element (also expected).
$x('//h2/text()[. = "delete"]')
// SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//h2/text()[lower-case(.) = "delete"]' is not a valid XPath expression.
$x('//h2/text()[lower-case(.) = "delete"]')
Run Code Online (Sandbox Code Playgroud) 我正在查看https://en.wikipedia.org/wiki/XPath_2.0,我惊讶地发现现代浏览器引擎不支持 XPath 2.0。我已经成功地使用了 XPath 2.0 函数,例如Chrome 中的substring-after 和 ,matches没有太多问题,但根据官方文档,这不应该被支持,因为它不是 XPath 1.0 的一部分。
兼容浏览器引擎列表是否已过时,或者我遗漏了什么?有人知道为什么 2007 年发布的这么旧的规范仍然不受支持吗?