JQuery无法使用我的Google Chrome扩展程序内容脚本?

时间:2013-01-09 22:12:03

标签: jquery google-chrome-extension content-script

正如chrome扩展开发教程中所提到的,我可以在我的manifest.json文件中包含jQuery,以便在内容脚本中使用它,如下所示:

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


我做到了但是,当我打开javascript控制台并单击我的扩展程序的浏览器操作图标时,我看到错误:“未捕获的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://*/*"]


content script snippet:

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


Re rsanchez的回答。 我会试着详细解释一下。众所周知,我们可以打开两个javascript控制台。第一个与扩展的popup.html相关联,第二个与当前打开的网页相关联。我在内容脚本和popup.html

中包含的脚本中有以下代码段(例如)
var = bodyWidth$('body').width(); 
console.log(bodyWidth);

当我打开与当前打开的网页相关联的控制台时,我收到上面提到的错误,但是当我打开与扩展程序的popup.html关联的js控制台时,我可以看到控制台中显示的正文宽度。 popup.html中包含的平均脚本不是指jQuery库和内容脚本。

3 个答案:

答案 0 :(得分:3)

Google Chrome浏览器不支持清单中/中的外部jquery.js文件 您必须download jquery并将其放在扩展程序文件夹中。然后,您可以将其添加到manifest.json

答案 1 :(得分:2)

如果您想在popup.html中包含的脚本中使用jQuery,则需要在脚本之前的jquery.js中加入popup.html

答案 2 :(得分: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);
});