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. Service Worker auf Webseiten oder in Webanwendungen registrieren Service Worker, indem sie zuerst serviceWorker
in navigator
erkennen und dann innerhalb der Funktionserkennung register()
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 du die import
-Anweisung verwenden möchtest, füge deinem Manifest das Feld "type"
hinzu und gib "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.