2015-10-11 100 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

相關問題