在 Manifest V3 下的 Firefox 中的 Service Worker 中使用 importScripts()

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

我正在开发浏览器扩展。在 Chrome 中,我可以简单地这样做:

manifest.json:

"background": {
        "service_worker": "scripts/vh_service_worker.js",
},

在我的 Service Worker 中,我可以毫无问题地使用

ìmportScript("somefile.js")

在 Firefox 中,Manifest v3 未实现

background.service_worker

尝试#1: 我将服务工作者加载为后台脚本:

manifest.json:

"background": {
        "scripts": ["scripts/vh_service_worker.js"]
    },

这个一般效果很好,但不幸的是它似乎没有在

WorkerGlobalScope
中执行,所以
importScripts()
这个功能不可用。

尝试#2: 我尝试使用后台脚本手动注册 Service Worker:

manifest.json:

"background": {
        "scripts": ["scripts/vh_service_worker_loader.js"]
    },

vh_service_worker_loader.js:

if ("serviceWorker" in navigator) {
    navigator.serviceWorker
        .register("scripts/vh_service_worker.js")
        .then((registration) => {
            console.log("Service Worker registered with scope:", registration.scope);
        })
        .catch((error) => {
            console.error("Service Worker registration failed:", error);
        });
}

但不幸的是没有可用的

navigator.serviceWorker
条目,因此 if 条件总是返回 false。

所以我的问题是: 如何在 Firefox 中使用

importScripts()
来使用 Manifest V3 进行扩展?

javascript firefox-addon service-worker manifest.json
1个回答
0
投票

要在 Firefox 的后台脚本中包含多个脚本,您可以将它们全部列在“

manifest.json
”数组下的
background.scripts
中。这会连接脚本并按顺序加载它们。

// manifest.json
{
  "manifest_version": 3,
  "background": {
    "scripts": [
      "scripts/file1.js",
      "scripts/file2.js",
      "scripts/file3.js"
    ]
  },
  // ... other properties ...
}
© www.soinside.com 2019 - 2024. All rights reserved.