2013-01-09 44 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); 
}); 
相关问题