ServiceWorker

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

* Some parts of this feature may have varying levels of support.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Das ServiceWorker-Interface der Service Worker API bietet eine Referenz auf einen Service Worker. Mehrere Browsing-Kontexte (z.B. Seiten, Worker etc.) können mit demselben Service-Worker verbunden sein, jeder durch ein einzigartiges ServiceWorker-Objekt.

Ein ServiceWorker-Objekt ist über eine Reihe von Eigenschaften verfügbar:

Die Eigenschaft ServiceWorker.state und das statechange-Ereignis können verwendet werden, um Änderungen im Lebenszyklus-Zustand des dem Objekt zugeordneten Service Workers zu überprüfen und zu beobachten. Bezogene Lebenszyklus-Ereignisse wie install und activate werden direkt am Service Worker ausgelöst.

Service Worker erlauben den statischen Import von ECMAScript-Modulen, wenn unterstützt, mittels import. Dynamischer Import ist durch die Spezifikation nicht erlaubt — ein Aufruf von import() wirft einen Fehler.

Service Worker können nur im Fenster-Kontext in einigen oder allen Browsern registriert werden, da das ServiceWorker-Objekt nicht im DedicatedWorkerGlobalScope und SharedWorkerGlobalScope verfügbar ist. Überprüfen Sie die Browser-Kompatibilität für weitere Informationen.

EventTarget ServiceWorker

Instanz-Eigenschaften

Das ServiceWorker-Interface erbt Eigenschaften von seinem Eltern-Interface, EventTarget.

ServiceWorker.scriptURL Schreibgeschützt

Gibt die serialisierte Skript-URL des ServiceWorker zurück, die als Teil der ServiceWorkerRegistration definiert ist. Die URL muss dieselbe Herkunft haben wie das Dokument, das den ServiceWorker registriert.

ServiceWorker.state Schreibgeschützt

Gibt den Zustand des Service Workers zurück. Es gibt einen der folgenden Werte zurück: parsed, installing, installed, activating, activated, oder redundant.

Instanz-Methoden

Das ServiceWorker-Interface erbt Methoden von seinem Eltern-Interface, EventTarget.

ServiceWorker.postMessage()

Sendet eine Nachricht — bestehend aus einem beliebigen strukturiert klonbaren JavaScript-Objekt — an den Service Worker. Die Nachricht wird dem Service Worker über ein message-Ereignis in dessen globalem Geltungsbereich übermittelt.

Ereignisse

statechange

Wird ausgelöst, wenn sich ServiceWorker.state ändert.

error

Wird ausgelöst, wenn ein Fehler im ServiceWorker-Objekt auftritt.

Beispiele

Dieser Codeausschnitt stammt aus dem Beispiel für die Registrierung von Service Worker-Ereignissen (Live-Demo). Der Code hört auf jede Änderung im ServiceWorker.state und gibt dessen Wert zurück.

js
if ("serviceWorker" in navigator) {
  navigator.serviceWorker
    .register("service-worker.js", {
      scope: "./",
    })
    .then((registration) => {
      let serviceWorker;
      if (registration.installing) {
        serviceWorker = registration.installing;
        document.querySelector("#kind").textContent = "installing";
      } else if (registration.waiting) {
        serviceWorker = registration.waiting;
        document.querySelector("#kind").textContent = "waiting";
      } else if (registration.active) {
        serviceWorker = registration.active;
        document.querySelector("#kind").textContent = "active";
      }
      if (serviceWorker) {
        // logState(serviceWorker.state);
        serviceWorker.addEventListener("statechange", (e) => {
          // logState(e.target.state);
        });
      }
    })
    .catch((error) => {
      // Something went wrong during registration. The service-worker.js file
      // might be unavailable or contain a syntax error.
    });
} else {
  // The current browser doesn't support service workers.
  // Perhaps it is too old or we are not in a Secure Context.
}

Spezifikationen

Specification
Service Workers
# serviceworker-interface

Browser-Kompatibilität

Siehe auch