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. 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.