{
"manifest_version": 2,
"name": "Legacy Search Assistant",
"version": "0.1.1",
"content_scripts": [
{
"matches": [
"https://*.legacysite.io/*","*://*/api*"
],
"js": ["jquery-3.6.0.min.js","content.js"]
}
],
"options_page": "options.html",
"background": {
"scripts": ["jsencrypt.min.js", "jquery-3.6.0.min.js", "background.js"]
},
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html",
"default_title": "Legacy Search"
},
"permissions": [
"storage"
]
}
从jsencrypt.min.js的js ins中,我已经在清单中加载了我能够在后台称其功能。 ,例如,当我在后台打电话时。
importScripts("/scripts/jsencrypt.min.js");
抛出以下错误:
Error handling response: Error: Failed to execute 'importScripts' on 'WorkerGlobalScope': The script at 'chrome-extension://<extension ID>/scripts/jsencrypt.min.js' failed to load.
如果我单击错误的链接,它将我直接带到要加载的库中。 我已经尝试了thisAnswer
中的所有修复程序。如果可以的话,请帮助。
Importscripts()是在工人中加载脚本的旧方法。
现在我们可以使用更现代的ES模块。从Chrome 91开始,我们可以在服务工作者中使用JavaScript模块。
即将设置
type属性属于清单中的模块。
{
"manifest_version": 3,
"background": {
"service_worker": "background.js",
"type": "module"
}
关键字导入其他模块。 ex-
// background.js
import * as module from './scripts/jsencrypt.min.js';
但是,在这种情况下,请确保您要导入的脚本,例如/scripts/jsencrypt.min.js
,已导出您要使用的所需代码。了解ES模块
我最终使用的解决方案是将所有jsencrypt的用法移至content.js。这允许模块正常运行,并且不会在我们使用Chrome扩展的环境中公开键。创建和初始化JSencrypt对象后,我通过消息传递给背景脚本。
在Chrome清单3中,如果您需要DOM或任何不支持的Web API(例如,服务工作者),则必须仔细阅读屏幕外的许可:
https://developer.chrome.com/docs/extensions/reference/api/offscreen#availability疗法切换到内容脚本侧是的。