2015-10-11 90 views
1

我正在做扩展插件,我需要在其中有xpath,即使我将jquery添加到清单中,它也不起作用。将XPath添加到Chrome扩展或添加到javascript

错误: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"] 
    } 
] 

SCRIPT:

$x("//div[@class='nazevprdiv' and ./a[text()='"+name+"']]/../../td/table/tbody/tr[@class='detznamka']/td"); 

回答

1

就像adelphus说的那样,它只是一个由Firebug作为xpath快捷方式的变量usd。您可以使用此代码来实现它:

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; 
} 
2

$x仅仅是一个普通的JavaScript变量名 - 这不是某些特殊的XPath访问。

看来,Firebug使用$x作为xpath shortcut,但这不是标准。

正如文档所示,您应该只使用document.evaluate,这是许多浏览器(除IE之外的标准)的标准。

编辑

作为@Xan指示,$x也使用镀铬作为其Command Line API的一部分。

+2

对于浏览器,它的[控制台API]的一部分(https://developer.chrome.com/devtools/docs/console-api) - 所以从工作控制台,但不是来自脚本。 – Xan

+0

有没有办法让$ x正常的函数,这将返回一个像$ x的html元素数组呢? (我看过他们的源代码(萤火虫的),我发现这个功能和其他,但有很多其他脚本正在被导入到脚本与xpath函数:https://github.com/firebug/firebug/ tree/master/extension/content/firebug/lib 和https://github.com/firebug/firebug/blob/master/extension/content/firebug/lib/xpath.js – Device

相关问题