2013-01-09 103 views
3

在Chrome擴展開發的教程中提到,我可以包括jQuery的我manifest.json文件中使用它的內容腳本,像這樣:JQuery不適用於我的Google Chrome擴展程序,內容腳本?

"content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "css": ["mystyles.css"], 
     "js": ["jquery.js", "myscript.js"] 
    } 
    ], 


我這樣做。但是,當我打開JavaScript控制檯並單擊我的擴展的瀏覽器操作圖標時,我看到錯誤:「Uncaught ReferenceError:$未定義」。

我該怎麼做!?我不明白什麼是錯的。


更新從OP,最初發布的答案:

按照要求,這裏是我的完整清單和內容腳本示例。 manifest.json的:

"name": "My Extension", 
"version": "1.0", 
"manifest_version": 2, 

"browser_action": { 
"default_icon": "icon.png", 
"default_popup": "popup.html", 
"default_title": "My Extension" 
}, 

"background": {"page": "background.html"}, 
"content_scripts": [{ 
"matches": ["http://*/*","https://*/*"], 
"js": ["jquery-1.8.3.js","content.js"] 
}], 

"permissions": ["tabs", "http://*/*", "https://*/*"] 


內容腳本片段:

var message = $('body').width(); 
chrome.extension.sendMessage (message); 


重新rsanchez的答案。 我會盡力詳細解釋。衆所周知,我們可以打開兩個javascript控制檯。第一個與擴展的popup.html關聯,第二個與當前打開的網頁關聯。我有以下的內容腳本,腳本包含在popup.html

var = bodyWidth$('body').width(); 
console.log(bodyWidth); 

當我打開與當前打開的網頁我收到錯誤上述關聯的控制檯代碼段(例如),但是當我打開JS控制檯關聯使用擴展名的popup.html,我可以看到控制檯中顯示的身體寬度。 popup.html中包含的平均腳本指的是jQuery庫和內容腳本。

+0

內容腳本與瀏覽器操作不一樣。請在您的問題中包含定義和處理瀏覽器操作的相關部分。 – rsanchez

+0

請問,部分是什麼?你能詳細告訴我嗎?我有popup.html中包含的內容腳本和腳本(每次單擊瀏覽器操作時都會運行此腳本)。 – anykey3

+0

請在下面看到我的回答 – rsanchez

回答

3

谷歌瀏覽器不支持清單中/來自外部的外部jquery.js文件。
您必須download jquery並將其放入擴展文件夾中。然後,您可以將其添加到manifest.json

+0

是的,我試圖這樣做,但它沒有幫助。無論如何,我收到錯誤「Uncaught ReferenceError:$未定義」。 – anykey3

+0

你沒有向我們展示的東西是問題,張貼或鏈接到你的*完整*清單和*完整*'myscript.js'。或**製作[SSCCE](http://sscce.org/)。** –

+0

請參閱我的回答下面的 – anykey3

2

如果您想在包含在popup.html中的腳本中使用jQuery,則需要在腳本之前包含jquery.js,popup.html

+0

是的,我知道。我可以在javascript中使用jQuery,但是我也想在我的內容腳本中使用jQuery,但它不起作用... – anykey3

+1

你說你點擊瀏覽器動作時看到錯誤圖標。這意味着錯誤來自彈出窗口,而不是內容腳本。 – rsanchez

+0

請看下面我的回答 – anykey3

0

您需要像下面這樣引用jquery.js文件,類似於內容腳本js文件。 它爲我工作。

chrome.windows.getCurrent(function(currentWindow) { 
    chrome.tabs.query({active: true, windowId: currentWindow.id}, function(activeTabs){ 
    chrome.tabs.executeScript(
     activeTabs[0].id, {file: 'jquery.min.js', allFrames: true} 
    ); 
    chrome.tabs.executeScript(
     activeTabs[0].id, {file: 'select_links.js', allFrames: true} 
    ); 
    }); 
    console.log(currentWindow.id); 
}); 
相關問題