Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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表达式异常_Javascript_Xpath_Xul - Fatal编程技术网

Javascript XPath表达式异常

Javascript XPath表达式异常,javascript,xpath,xul,Javascript,Xpath,Xul,我不确定我是否正确使用XPath表达式。我试图在DOM上找到一个文本,该文本被分配到一个变量。我在SQLite中存储了文本,我已经检索了文本,我试图在实际包含文本的网页上找到它。所以我有以下代码: var searchText = dataset[x]['selectedText']; alert(dataset[x]['selectedText']); var res = googbar_frames[0].contentDocument.evaluate("/

我不确定我是否正确使用XPath表达式。我试图在DOM上找到一个文本,该文本被分配到一个变量。我在SQLite中存储了文本,我已经检索了文本,我试图在实际包含文本的网页上找到它。所以我有以下代码:

var searchText = dataset[x]['selectedText'];
        alert(dataset[x]['selectedText']);
        var res = googbar_frames[0].contentDocument.evaluate("//*[.=searchText]",googbar_frames[0].contentDocument.body,null,XPathResult.ANY_TYPE,null);
        alert(res.snapshotLength);
我得到以下错误

Error: Permission denied for <http://en.wikipedia.org> to call method XPathException.toString on <>.
Error: Permission denied for <http://en.wikipedia.org> to call method XPathException.toString on <>.
错误:在上调用方法XPathException.toString的权限被拒绝。
错误:对调用方法XPathException.toString的权限被拒绝。
我的表达是正确的。我正在尝试查找DOM上的文本。还是我错了?
干杯

[这是问题的原始答案,另请参见a和]

这个表达是不正确的。在browser.xul上下文中运行(即使用正确的表达式):

 content.document.evaluate("//*[.=searchText]",
   content.document.body,null,XPathResult.ANY_TYPE,null); 
-虽然不是很有用,但不会产生这样的异常

您是否确实在XPath表达式中包含
searchText
?它的报价正确吗?我希望您的XPath结果不会像您期望的那样,那么您实际上想做什么呢?也许使用Firefox Find工具栏使用的界面会是一个更好的主意?

[这是对的回答。对不起,stackoverflow纯粹主义者!注释内容并不总是有效。]

是的,这就是我之前说过的
“//text()[包含(,searchText)]”
没有使用JavaScript变量
searchText
,它只是一个字符串

您可以使用
searchText
构造XPath表达式。JS中没有,因此必须使用手动连接来构造XPath表达式,如下所示:

var xpathExpr = ".//text()[contains(.,'" + searchText + "')]";
但如果searchText包含一个引号('),则此操作将失败,因此您必须在XPath中转义它,并可能转义在此上下文中具有特殊意义的其他字符。我无法为您弄清楚在searchText中究竟需要什么以及如何逃逸,这将涉及到在Internet上搜索现有的解决方案,或者阅读xpath规范来学习本例中的语法

所以我坚持我原来的回答:
你到底想做什么?也许使用Firefox Find工具栏使用的界面会更好?

需要更多代码。什么是“googbar_框架”?这段代码是从哪里调用的?嘿,在XPath表达式中包含searchText是什么意思?var searchText=dataset[x]['selectedText'];//他们的代码从数据库中检索文本,例如足球。所以要搜索的文本是“football”。至于contentDocument,我已经在主浏览器中安装了框架,它是为firefox设计的。非常感谢。是的,我确实设法得到了我想要的。这个答案非常有帮助。