Extension Service Worker – Grundlagen

Die Service Worker der Erweiterung werden anders installiert und aktualisiert als die Web Service Worker. Auf dieser Seite werden diese Unterschiede erläutert.

Service Worker registrieren

Wenn Sie einen Erweiterungs-Service-Worker registrieren möchten, geben Sie ihn im Feld "background" der Datei manifest.json an. Verwenden Sie den Schlüssel "service_worker", der eine einzelne JavaScript-Datei angibt. Service Worker auf Webseiten oder Webanwendungen registrieren Service Worker, indem sie zuerst die Featureerkennung für serviceWorker in navigator und dann register() in der Featureerkennung aufrufen. Dies funktioniert nicht bei Erweiterungen.

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

Skripts importieren

Es gibt zwei Methoden zum Importieren von Skripts in einen Service Worker: die Anweisung import und die Methode importScripts(). Hinweis: import() wird oft als dynamischer Import bezeichnet und 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 dann import wie gewohnt. Import-Assertions werden nicht unterstützt.

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

Verwenden Sie importScripts() wie in einem Webdienst-Worker.

importScripts('locales.js');

Aktualisieren

Wenn Sie den Service Worker aktualisieren möchten, veröffentlichen Sie eine neue Version der Erweiterung im Chrome Web Store. Das lässt sich nicht umgehen, indem Sie die Erweiterung von einem Server laden. Aus Sicherheitsgründen unterstützt Manifest V3keinen extern gehosteten Code. Ihr Service Worker muss Teil des Erweiterungspakets sein.