扩展程序 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 必须是扩展程序软件包的一部分。