Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XPath表达式返回';指定了非法字符串';在铬,但不是FF_Javascript_Google Chrome_Xpath_Greasemonkey_Evaluate - Fatal编程技术网

Javascript XPath表达式返回';指定了非法字符串';在铬,但不是FF

Javascript XPath表达式返回';指定了非法字符串';在铬,但不是FF,javascript,google-chrome,xpath,greasemonkey,evaluate,Javascript,Google Chrome,Xpath,Greasemonkey,Evaluate,这是一个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

这是一个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')] ]"
错误消息: 未捕获的语法错误:指定了无效或非法的字符串

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

“//一张[@class='inline-object操作卡'和一张[@href='test.com']]”

这也不起作用。是否有人可以解释这一点并更正代码?
提前谢谢

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

第二次编辑:这里有一个测试节点:
[true()]
这样的XPath表达式实际上是非法的(至少在XPath 1.0中是这样)。只允许使用谓词

  • 在节点测试之后,而不是在缩写步骤之后,如
  • 在or之后,但不在任何其他表达式之后
您只需按照@Ross Patterson的建议编写一个[@class='inline-object'并包含(@href,'test.com')]。或者,另一种更复杂的方法是:

  • self::node()[包含(@href,'test.com')]
  • self::*[包含(@href,'test.com')]
  • ()[包含(@href,'test.com')]

为什么只注意
//a[@class='inline-object'和contains(@href,'test.com')]
?似乎也会导致“未捕获的语法错误:指定了无效或非法的字符串”。错误:(我这样写的唯一原因是指定我希望当前节点与and语句匹配,而不是与任何其他语句匹配(即使用//a而不是。)@RossPatterson建议的表达式与您的表达式相同。我在铬上试用过,似乎效果很好。我仍然无法使我的表达式起作用(如果您建议的话),但是@RossPatterson的表达式起作用了,谢谢!谢谢,我一定是弄乱了我的字符串,它有点长,有点复杂。向Ross Patterson道歉。我找到了一些关于和/更复杂语句的教程,我遵循了,但现在更清楚了。谢谢!作为将来的参考,W3Schools是一个非常贫乏的资源。这是信息这通常是不正确的。