ServiceWorkerGlobalScope

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.

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

Hinweis: Dieses Feature ist nur verfügbar in Service Workers.

Das ServiceWorkerGlobalScope Interface der Service Worker API repräsentiert den globalen Ausführungskontext eines Service Workers.

Entwickler sollten beachten, dass der Zustand des ServiceWorkers nicht über den Beendigungs-/Neustartzyklus hinweg beibehalten wird. Jeder Ereignishandler sollte daher annehmen, dass er mit einem leeren, standardmäßigen globalen Zustand aufgerufen wird.

Nach erfolgreicher Registrierung kann und wird ein Service Worker beendet, wenn er inaktiv ist, um Speicher und Prozessorleistung zu sparen. Ein aktiver Service Worker wird automatisch neu gestartet, um auf Ereignisse zu reagieren, wie zum Beispiel fetch oder message.

Darüber hinaus sind synchrone Anfragen innerhalb eines Service Workers nicht erlaubt — es können nur asynchrone Anfragen verwendet werden, wie sie zum Beispiel über die Methode fetch() initiiert werden.

Dieses Interface erbt vom WorkerGlobalScope Interface und dessen Elternteil EventTarget.

EventTarget WorkerGlobalScope ServiceWorkerGlobalScope

Instanz-Eigenschaften

Dieses Interface erbt Eigenschaften vom WorkerGlobalScope Interface und dessen Elternteil EventTarget.

ServiceWorkerGlobalScope.clients Nur lesbar

Beinhaltet das Clients Objekt, das mit dem Service Worker verbunden ist.

ServiceWorkerGlobalScope.cookieStore Nur lesbar Experimentell

Gibt eine Referenz auf das CookieStore Objekt zurück, das mit dem Service Worker verbunden ist.

ServiceWorkerGlobalScope.registration Nur lesbar

Beinhaltet das ServiceWorkerRegistration Objekt, das die Registrierung des Service Workers repräsentiert.

ServiceWorkerGlobalScope.serviceWorker Nur lesbar

Beinhaltet das ServiceWorker Objekt, das den Service Worker repräsentiert.

Instanz-Methoden

Dieses Interface erbt Methoden vom WorkerGlobalScope Interface und dessen Elternteil EventTarget.

ServiceWorkerGlobalScope.skipWaiting()

Erlaubt es der aktuellen Registrierung des Service Workers, vom Wartezustand in den aktiven Zustand zu wechseln, während Service Worker Clients es verwenden.

Ereignisse

Hören Sie auf dieses Ereignis mit addEventListener() oder indem Sie einen Ereignis-Listener auf die oneventname-Eigenschaft dieses Interfaces zuweisen.

activate

Tritt auf, wenn eine ServiceWorkerRegistration einen neuen ServiceWorkerRegistration.active Worker erwirbt.

backgroundfetchabort Experimentell

Wird ausgelöst, wenn eine Operation des Background Fetch vom Benutzer oder der App abgebrochen wurde.

backgroundfetchclick Experimentell

Wird ausgelöst, wenn der Benutzer auf die Benutzeroberfläche für eine Background Fetch Operation geklickt hat.

backgroundfetchfail Experimentell

Wird ausgelöst, wenn mindestens eine der Anfragen in einer Background Fetch Operation fehlgeschlagen ist.

backgroundfetchsuccess Experimentell

Wird ausgelöst, wenn alle Anfragen in einer Background Fetch Operation erfolgreich waren.

canmakepayment Experimentell

Wird auf dem Service Worker einer Zahlungs-App ausgelöst, um zu überprüfen, ob sie bereit ist, eine Zahlung zu bearbeiten. Speziell wird es ausgelöst, wenn die Händlerwebsite den PaymentRequest() Konstruktor aufruft.

contentdelete Experimentell

Tritt auf, wenn ein Element aus dem ContentIndex entfernt wird.

cookiechange Experimentell

Wird ausgelöst, wenn eine Cookie-Änderung aufgetreten ist, die mit der Cookie-Änderungs-Abonnementliste des Service Workers übereinstimmt.

fetch

Tritt auf, wenn ein fetch() aufgerufen wird.

install

Tritt auf, wenn eine ServiceWorkerRegistration einen neuen ServiceWorkerRegistration.installing Worker erwirbt.

message

Tritt auf, wenn eingehende Nachrichten im Empfang festgestellt werden. Kontrollierte Seiten können die Methode MessagePort.postMessage() verwenden, um Nachrichten an Service Workers zu senden.

messageerror

Tritt auf, wenn eingehende Nachrichten nicht deserialisiert werden können.

notificationclick

Tritt auf, wenn ein Benutzer auf eine angezeigte Benachrichtigung klickt.

notificationclose

Tritt auf, wenn ein Benutzer eine angezeigte Benachrichtigung schließt.

paymentrequest Experimentell

Wird in einer Zahlungs-App ausgelöst, wenn ein Zahlungsablauf auf der Händlerwebsite über die Methode PaymentRequest.show() eingeleitet wurde.

sync

Wird ausgelöst, wenn ein Aufruf an SyncManager.register von einer Service Worker Client-Seite gemacht wird. Der Versuch, zu synchronisieren, wird entweder sofort unternommen, wenn das Netzwerk verfügbar ist, oder sobald das Netzwerk verfügbar wird.

periodicsync Experimentell

Tritt bei periodischen Intervallen auf, die beim Registrieren eines PeriodicSyncManager festgelegt wurden.

push

Tritt auf, wenn eine Server-Push-Benachrichtigung empfangen wird.

pushsubscriptionchange

Tritt auf, wenn ein Push-Abonnement ungültig geworden ist oder kurz davor steht ungültig zu werden (z.B. wenn ein Push-Dienst eine Ablaufzeit setzt).

Beispiele

Dieses Code-Snippet stammt aus dem Service Worker Prefetch-Beispiel (siehe Prefetch-Beispiel live.) Der onfetch Ereignishandler hört auf das fetch Ereignis. Bei Auslösung gibt der Code ein Versprechen zurück, das auf die erste passende Anfrage im Cache Objekt auflöst. Wenn keine Übereinstimmung gefunden wird, holt der Code eine Antwort aus dem Netzwerk.

Der Code behandelt auch Ausnahmen, die von der fetch() Operation ausgelöst werden. Beachten Sie, dass eine HTTP-Fehlerantwort (z.B. 404) keine Ausnahme auslöst. Sie wird ein normales Antwortobjekt zurückgeben, das den entsprechenden Fehlercode gesetzt hat.

js
self.addEventListener("fetch", (event) => {
  console.log("Handling fetch event for", event.request.url);

  event.respondWith(
    caches.match(event.request).then((response) => {
      if (response) {
        console.log("Found response in cache:", response);

        return response;
      }
      console.log("No response found in cache. About to fetch from network…");

      return fetch(event.request).then(
        (response) => {
          console.log("Response from network is:", response);

          return response;
        },
        (error) => {
          console.error("Fetching failed:", error);

          throw error;
        },
      );
    }),
  );
});

Spezifikationen

Specification
Service Workers
# serviceworkerglobalscope-interface

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch