3

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

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


我这样做了。但是当我打开 javascript 控制台并单击我的扩展程序的浏览器操作图标时,我看到错误:“未捕获的 ReferenceError:$ 未定义”。

我该怎么办!?我不明白出了什么问题。


来自 OP 的更新,最初作为答案发布:

根据要求,这是我的完整清单和内容脚本示例。清单.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);

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

4

3 回答 3

3

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

于 2013-01-09T22:22:30.297 回答
2

如果你想在包含在的脚本中使用 jQuery popup.html,你需要jquery.jspopup.html你的脚本之前包含。

于 2013-01-10T16:41:59.513 回答
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);
});
于 2014-06-15T16:21:13.123 回答