Extension Service Worker – Grundlagen

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.