Google chrome extension 如何在Chrome的扩展中包含库

Google chrome extension 如何在Chrome的扩展中包含库,google-chrome-extension,Google Chrome Extension,我想在manifest.js`中包含ethereumjs-tx.js`而不包含内容\脚本 我的manifest.js: { "manifest_version": 2, "name": "MyExtension", "version": "1.0", "background": { "scripts": ["background.js"] }, "permissions": [ "tabs", "notifications", "http://*

我想在manifest.js`中包含ethereumjs-tx.js`而不包含内容\脚本

我的
manifest.js

{
"manifest_version": 2,

"name": "MyExtension",
"version": "1.0",    
"background": {
    "scripts": ["background.js"]
  },

 "permissions": [
    "tabs",
    "notifications",
    "http://*/",
    "https://*/"
  ]
}

我认为Airlancer有一个观点,即如果您的脚本不在
content\u脚本中,库之间会发生冲突

从中也可以看出:

您不应该使用
background
标记来添加js库。你好多了 停止下载扩展并将其与所需库绑定 并把它作为一个例子


如果要在后台脚本中添加库,可以包含一个HTML并加载HTML中的所有库,并在manifest.js中的后台选项中添加该HTML

manifest.json

"background": {
    "page": "background.html", 
    "persistent": false
  }
background.html

<script src="./lib/moment/moment.min.js"></script>
<script type="module" src="./js/background.js"></script>


有两种方法可以将外部库包含到Chrome中扩展的后台脚本中。我说背景脚本,因为该脚本最有可能需要外部库

为了澄清这一点,您的后台脚本在不同于用户正在使用的任何网页的范围内运行。因此,在后台脚本中加载外部库不会覆盖正在使用的网页中的任何内容

方法1:使用清单文件中
background
键的
scripts
键 在
scripts
键的值内,添加一个数组,其中包含对所需库的引用以及后台脚本。请注意,数组中的顺序很重要。首先列出的脚本将首先加载

例如:

// ...
"background": {
  "scripts": ["jquery.min.js", "background.js"]
}
//...
"background": {
  "page": "background.html",
  "persistent": true
},
//...
"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'"
在这里,你的背景页面将由Chrome自动构建

方法2:在清单文件中使用
背景
键的
页面
键 有时,在项目目录中保存一个2.5MB的库文件是没有效率的

使用此方法,您将构建自己的后台页面,使用脚本标记远程加载所需的后台脚本和库

manifest.json
文件中的
后台
键中删除
脚本
键,并将其替换为
页面
。您可以使用
脚本
键或
页面
键,但不能同时使用这两个键。
页面的值是对背景html页面的引用

但这还不够。Chrome的安全策略禁止您远程下载资源

因此,修改
content\u security\u policy
键以放宽默认安全策略,并指定后台页面下载库的URL

例如:

// ...
"background": {
  "scripts": ["jquery.min.js", "background.js"]
}
//...
"background": {
  "page": "background.html",
  "persistent": true
},
//...
"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'"

为了什么?我认为这是不可能的。它旨在使您的扩展不覆盖您正在与之交互的网站所使用的现有库。假设您的扩展使用jquery 1.3版,但网站使用的是jquery 1.2版。如果扩展中的脚本没有在内容脚本中运行,那么这些库将发生冲突。我将lib包含在“background”中,向下看这应该是一个注释,而不是答案,因为它根本不回答问题。