Google Chrome扩展程序:如何在以编程方式注入的内容脚本中包含jQuery?

mpe*_*pen 40 javascript jquery google-chrome-extension

当用户单击浏览器操作按钮时,我从后台页面注入我的内容脚本,如下所示:

chrome.browserAction.onClicked.addListener(function (tab) {
    chrome.tabs.executeScript(null, { file: "content.js" });
});
Run Code Online (Sandbox Code Playgroud)

那么如何从我的内部访问jQuery content.js?我没有看到同时注入的方法.

ser*_*erg 82

关于什么:

chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
    chrome.tabs.executeScript(null, { file: "content.js" });
});
Run Code Online (Sandbox Code Playgroud)

你可以从这里下载"jquery.js":http://jquery.com/download/

  • 但是......如果你在googleapis.com上使用托管的jQuery怎么办? (4认同)
  • 那会把他们扔进同一个"孤立的世界"吗?我会给它旋转一下! (3认同)

小智 15

如何将其添加到清单文件中

"content_scripts": [
    {
        "js": [
                "jquery.js", 
                "contentscript.js"
            ]
    }
],
Run Code Online (Sandbox Code Playgroud)

  • 这不会让Chrome在每个标签中解析jQuery,即使它不需要吗? (7认同)

Ruw*_*han 5

更新:

在第一个脚本之后执行第二个脚本在脚本顺序方面会更准确,result是选项卡列表中脚本执行结果的数组。

chrome.tabs.executeScript(null, {file:'js/jquery-2.1.1.min.js'}, function(result){
    chrome.tabs.executeScript(null, {file:'js/myscript.js'});
});
Run Code Online (Sandbox Code Playgroud)

老的:

在脚本中注入 Jquery 将能够在脚本中访问 Jquery。

chrome.tabs.executeScript(null, {file:'js/jquery-2.1.1.min.js'});
chrome.tabs.executeScript(null, {file:'js/myscript.js'});
Run Code Online (Sandbox Code Playgroud)

您可以更好地控制如何注入脚本,如此处所述allFrames如果您希望将脚本注入到文档中的所有框架中,属性尤其重要。忽略它只会注入到顶部框架中。由于其他答案中没有提到,猜测它对您有帮助。始终可以通过将脚本添加到清单中来注入脚本,如此处所述