Erweiterungs-Service-Worker werden anders als Web-Service-Worker installiert und aktualisiert. Auf dieser Seite werden diese Unterschiede erläutert.
Service Worker registrieren
Wenn Sie einen Erweiterungs-Dienst-Worker registrieren möchten, geben Sie ihn im Feld "background"
der Datei manifest.json
an. Verwenden Sie den Schlüssel "service_worker"
, um eine einzelne JavaScript-Datei anzugeben. Dienstprogramme in Webseiten oder Webanwendungen registrieren Dienstprogramme, indem sie zuerst serviceWorker
in navigator
erkennen und dann register()
innerhalb der Feature-Erkennung aufrufen. Das funktioniert nicht für Erweiterungen.
{
"name": "Awesome Test Extension",
...
"background": {
"service_worker": "service-worker.js"
},
...
}
Scripts importieren
Es gibt zwei Methoden, Scripts in einen Service Worker zu importieren: die Anweisung import
und die Methode importScripts()
. import()
, oft als dynamischer Import bezeichnet, wird nicht unterstützt.
Wenn Sie die Anweisung import
verwenden möchten, fügen Sie Ihrem Manifest das Feld "type"
hinzu und geben Sie "module"
an. Beispiel:
"background": {
"service_worker": "service-worker.js",
"type": "module"
}
Verwenden Sie import
dann wie gewohnt. Importaussagen werden nicht unterstützt.
import { tldLocales } from './locales.js';
Verwenden Sie importScripts()
wie in einem Webdienst-Worker.
importScripts('locales.js');
Aktualisieren
Wenn Sie den Dienst-Worker aktualisieren möchten, veröffentlichen Sie eine neue Version Ihrer Erweiterung im Chrome Web Store. Das Laden der Erweiterung von einem Server aus ändert daran nichts. Aus Sicherheitsgründen wird in Manifest V3 kein extern gehosteter Code unterstützt. Ihr Dienst-Worker muss Teil des Erweiterungspakets sein.