2014-01-07 55 views
-1

我正在編寫一個擴展,對標籤A中對象的右鍵單擊操作將影響具有我控制的管理html頁面的選項卡B上的某些活動。我已經成功地注入了一些代碼到網頁B網頁B本身使用jQuery的,我想在我的注入代碼使用jQuery,但我得到了以下錯誤:jQuery代碼注入不能在已經擁有jQuery的頁面上工作

未捕獲的ReferenceError:jQuery是沒有定義

我的擴展代碼:

function AddAsinInTab(asin,tab) { 

    chrome.tabs.executeScript(tab["id"], { code: 'jQuery("a").css("color","red");'}); 

} 

在管理頁面A的底部相同的代碼工作正常,在頁面加載:

<script> 
    jQuery("a").css("color","blue"); 
</script> 
+0

@gthacoder。我已經嘗試過了。我仍然得到:'未捕獲的ReferenceError:未定義jQuery' – Ofer

回答

1

您沒有提供很多細節,但似乎你的執行腳本根本沒有看到頁面中的jQuery文件。我會嘗試加載jQuery以及你的程序注入。像這樣的東西可以幫助(你應該有jQuery的1.10.2.min.js在同一目錄文件作爲擴展名):

chrome.tabs.executeScript(tab["id"], { file: "jquery-1.10.2.min.js" }, function() { 
    chrome.tabs.executeScript(tab["id"], { code: 'jQuery("a").css("color","red");' }); 
}); 
+1

http://developer.chrome.com/extensions/content_scripts.html#execution-environment描述了發生這種情況的原因:「內容腳本在一個稱爲孤立世界的特殊環境中執行。他們可以訪問它們被注入的頁面的DOM,但不能訪問頁面創建的任何JavaScript變量或函數。「由於jQuery是一堆JavaScript變量和函數,擴展必須自己注入它。 –