Javascript Chrome扩展-无法在background.js中加载外部脚本
我有一个chrome分机。我无法调用外部脚本来处理background.js脚本中的以太坊(web3.min.js)。尝试调用脚本时出现以下错误:Javascript Chrome扩展-无法在background.js中加载外部脚本,javascript,google-chrome-extension,ethereum,Javascript,Google Chrome Extension,Ethereum,我有一个chrome分机。我无法调用外部脚本来处理background.js脚本中的以太坊(web3.min.js)。尝试调用脚本时出现以下错误: Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive:
Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self' blob: filesystem:".
到目前为止我尝试过的:1.将脚本下载到扩展文件夹,并将其添加到manifest.json:
"background":{"scripts":["web3.min.js", "background.js"]}
它包含它,但在包含的文件中给出相同的错误,因为它依次使用其他库。
2.使用XMLHttp请求:
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://cdn.jsdelivr.net/gh/ethereum/web3.js@1.0.0-beta.34/dist/web3.min.js", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var resp = eval("(" + xhr.responseText + ")");
}
}
xhr.send();
var script = document.createElement("script");
script.src = "./web3.min.js";
document.head.appendChild(script);
这些解决方案都不适合我。我知道这是出于安全原因,但没有解决方案吗?我只想在我的扩展中包含web3。允许外部代码在后台脚本的高度特权上下文中运行是一个绝对糟糕的想法,但如果你坚持可以,尽管更好的方法是在内部运行它。如果库中不包含未经许可的调用,如
eval(..),则第一种方法应该有效
或新函数(..)
第一个方法的工作原理是包含它,但它在脚本内部给出了相同的错误,因为它依次包含其他文件。我更新了问题