Extension Service Worker 基础知识

扩展程序 Service Worker 的安装和更新方式与 Web Service Worker 不同。本页将介绍这些差异。

注册 Service Worker

如需注册扩展程序服务工作器,请在 manifest.json 文件的 "background" 字段中指定该服务工作器。使用 "service_worker" 键,用于指定单个 JavaScript 文件。网页或 Web 应用中的 Service Worker 会通过以下方式注册 Service Worker:首先对 navigator 中的 serviceWorker 进行特征检测,然后在功能检测内调用 register()。这不适用于扩展程序。

{
  "name": "Awesome Test Extension",
  ...
  "background": {
    "service_worker": "service-worker.js"
  },
  ...
}

导入脚本

您可以通过以下两种方法将脚本导入到服务工件中:import 语句和 importScripts() 方法。请注意,不支持 import()(通常称为动态导入)。

如需使用 import 语句,请将 "type" 字段添加到清单并指定 "module"。例如:

  "background": {
    "service_worker": "service-worker.js",
    "type": "module"
  }

然后,照常使用 import。请注意,不支持导入断言。

import { tldLocales } from './locales.js';

使用 importScripts() 的方式与在 Web 服务工作器中一样。

importScripts('locales.js');

更新

如需更新服务工件,请将扩展程序的新版本发布到 Chrome 应用商店。您无法通过从服务器加载扩展程序来解决此问题。出于安全原因,Manifest V3 不支持远程托管的代码。您的 Service Worker 必须是扩展程序软件包的一部分。