我正在制作chrome扩展,我需要在其中添加xpath,即使我将jquery添加到清单中,它也不工作。
ERROR: Uncaught ReferenceError: $x is not defined
清单:
"permissions": [
"activeTab",
"*://www.znamky.zsunesco.cz/*"
],
"content_scripts": [
{
"matches": ["http://znamky.zsunesco.cz/*"],
"js": ["jquery-1.11.3.min.js", "Script.js"]
}
]
脚本:
$x("//div[@class='nazevprdiv' and ./a[text()='"+name+"']]/../../td/table/tbody/tr[@class='detznamka']/td");
就像adelphus说的,它只是Firebug作为xpath快捷方式使用的一个变量。你可以用下面的代码来实现它:
function $x(path){
var xpath = document.evaluate(path, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var temp = [];
for (var i = xpath.snapshotLength - 1; i >= 0; i--) {
temp.push(xpath.snapshotItem(i));
}
return temp;
}
$x
只是一个普通的Javascript变量名-它不是什么特殊的xpath访问器。
Firebug似乎使用$x
作为xpath快捷方式,但这不是标准的。
如文档所示,您应该只使用document。评估哪些是跨许多浏览器的标准(当然IE除外)。
编辑
如@Xan所示,$x
也被Chrome用作其命令行API的一部分。