所以这是一个xPath表达式,在Firefox用户脚本中运行良好,但在(本机)chrome用户脚本中失败:
var nodesSnapshot = document.evaluate("//a[@class='inline-object' and .[contains(@href,'test.com')] ]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
//just the string:
"//a[@class='inline-object' and .[contains(@href,'test.com')] ]"
错误讯息: 未捕获的SyntaxError:指定了无效或非法的字符串。
我尝试了几件事(例如额外的括号),谷歌搜索和搜索stackoverflow没有成功。我也尝试过:
"//a[@class='inline-object action-card' and .[@href = 'test.com']]"
这也没用。是否有人可以解释这一点并更正代码? 提前致谢
编辑:更重要的信息:问题似乎是'和声明'中的'当前节点'(点)。
2nd Edit:这是一个测试节点:
<a href="test.com" class="inline-object"> text of the testnode </a>
答案 0 :(得分:2)
像.[true()]
这样的XPath表达式实际上是非法的(至少在XPath 1.0中)。仅允许谓词
.
您应该只关注@Ross Patterson的建议并撰写//a[@class='inline-object' and contains(@href,'test.com')]
。或者,或者更复杂:
self::node()[contains(@href,'test.com')]
或self::*[contains(@href,'test.com')]
或(.)[contains(@href,'test.com')]