在chrome扩展中包含托管的js和css

时间:2015-04-09 06:52:11

标签: javascript google-chrome-extension

是否可以将托管的js和css添加到content_script chrome插件。

"content_scripts": [
    {
      "matches": ["*://*/*"],
      "css": ["bootstrap.min.css", "mystyles.css"],
      "js": ["jquery-1.7.2.min.js", "myscript.js"],
      "all_frames" : true
    }
  ]

这里的js和css应该在manifest.json

的同一个包中

我想添加像

这样的托管js
"content_scripts": [
    {
      "matches": ["*://*/*"],
      "css": ["bootstrap.min.css", "mystyles.css"],
      "js": ["https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js", "https://www.example.com/js/myscript.js"],
      "all_frames" : true
    }
  ]

1 个答案:

答案 0 :(得分:3)

不,不能那样做。

首先,从不使用CDN将jQuery等库提供给您的扩展程序;实际上没有意义,你在节省什么?如果不存在网络延迟,则会出现网络延迟。

接下来,app逻辑脚本。我可以理解比更新扩展更快地更新它们的要求,然后它是有道理的。但是,您不能在清单中包含类似的非本地文件。

但是,您可以执行以下操作:

  1. 注入一个小的“bootstrap”脚本,即本地脚本。

  2. Message来自bootstrap脚本的background page请求注入其余内容。

  3. 后台页面提取脚本with XHR(请记住,您需要主机权限)。

    我建议也使用某种缓存,例如每N分钟/小时/天和saving a copy locally in chrome.storage尝试获取一个新版本。否则,再次,你会得到可怕的延迟。

  4. 后台页面使用

    注入脚本
    chrome.tabs.executeScript(tabId, {code: "..."})
    

    programmatic injection的形式。

  5. 请注意,所有这些都相对复杂,并且非常不鼓励,除非您使用HTTPS来提供脚本(否则您对MitM攻击持开放态度)。除非您有比更新扩展更快更新应用程序逻辑的特定要求,否则请不要这样做。