gpt4 book ai didi

javascript - XPath 表达式在 Chrome 中返回 'illegal string specified' 而不是 FF

转载 作者:行者123 更新时间:2023-11-30 17:42:13 25 4
gpt4 key购买 nike

所以这是一个 xPath 表达式,它在 Firefox 用户脚本中运行良好 但在( native )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')] ]"

错误信息:未捕获的语法错误:指定了无效或非法的字符串。

我已经尝试了几种方法(例如额外的括号),谷歌搜索和在 stackoverflow 上搜索都没有成功。我也试过:

"//a[@class='inline-object action-card' and .[@href = 'test.com']]"

这也没有用。有没有人可以解释一下并更正代码?
提前致谢

编辑:更重要的信息:问题似乎是“and 语句”中的“当前节点”(点)

第二次编辑:这是一个测试节点: <a href="test.com" class="inline-object"> text of the testnode </a>

最佳答案

.[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')]

关于javascript - XPath 表达式在 Chrome 中返回 'illegal string specified' 而不是 FF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com