染色扩展清单v3库中的V3库 我在将我的Chrome扩展从清单V2更新为V3的过程中。 这是旧的清单: 清单V2: { “ castest_version”:2, “名称”:“传统搜索助手&q ...

问题描述 投票:0回答:1

{ "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" }

javascript google-chrome-extension chrome-extension-manifest-v3
1个回答
8
投票
Import

关键字导入其他模块。 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

疗法切换到内容脚本侧是的。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.