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.

* 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 nur in Service Workers verfügbar.

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

Entwickler sollten berücksichtigen, dass der Zustand des Service Workers über den Zyklus von Beendigung und Neustart hinweg nicht erhalten bleibt. Jeder Event-Handler sollte daher davon ausgehen, dass er in einem nackten, standardmäßigen globalen Zustand aufgerufen wird.

Sobald ein Service Worker erfolgreich registriert wurde, kann er zur Einsparung von Speicher und Prozessorleistung beendet werden, wenn er im Leerlauf ist. Ein aktiver Service Worker wird automatisch neu gestartet, um auf Ereignisse wie fetch oder message zu reagieren.

Zusätzlich sind synchrone Anfragen innerhalb eines Service Workers nicht erlaubt. Nur asynchrone Anfragen, wie die über die fetch()-Methode initiierten, können verwendet werden.

Dieses Interface erbt vom WorkerGlobalScope-Interface und dessen übergeordnetem EventTarget.

EventTarget WorkerGlobalScope ServiceWorkerGlobalScope

Instanz-Eigenschaften

Dieses Interface erbt Eigenschaften vom WorkerGlobalScope-Interface und dessen übergeordnetem EventTarget.

ServiceWorkerGlobalScope.clients Schreibgeschützt

Beinhaltet das Clients-Objekt, das dem Service Worker zugeordnet ist.

ServiceWorkerGlobalScope.cookieStore Schreibgeschützt

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

ServiceWorkerGlobalScope.registration Schreibgeschützt

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

ServiceWorkerGlobalScope.serviceWorker Schreibgeschützt

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

Instanz-Methoden

Dieses Interface erbt Methoden vom WorkerGlobalScope-Interface und dessen übergeordnetem EventTarget.

ServiceWorkerGlobalScope.skipWaiting()

Erlaubt es der aktuellen Service Worker-Registrierung, vom Wartestand in den aktiven Zustand zu wechseln, während die Service Worker-Clients diese nutzen.

Ereignisse

Dieses Ereignis kann mit addEventListener() oder durch Zuweisung eines Event-Listeners zur Eigenschaft oneventname dieses Interfaces überwacht werden.

activate

Tritt auf, wenn eine ServiceWorkerRegistration einen neuen ServiceWorkerRegistration.active-Worker erhält.

backgroundfetchabort Experimentell

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

backgroundfetchclick Experimentell

Wird ausgelöst, wenn der Nutzer auf die Benutzeroberfläche einer Background Fetch-Operation klickt.

backgroundfetchfail Experimentell

Wird ausgelöst, wenn mindestens eine der Anfragen in einer Background Fetch-Operation fehlschlägt.

backgroundfetchsuccess Experimentell

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

canmakepayment Experimentell

Wird auf dem Service Worker einer Zahlung ausgeführt, um zu prüfen, ob er bereit ist, eine Zahlung zu bearbeiten. Insbesondere wird es ausgelöst, wenn die Händler-Website den PaymentRequest()-Konstruktor aufruft.

contentdelete Experimentell

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

cookiechange Experimentell

Wird ausgelöst, wenn eine Änderung an Cookies eintritt, die zur Abonnementliste des Service Workers passt.

fetch

Tritt auf, wenn ein fetch()-Aufruf erfolgt.

install

Tritt auf, wenn eine ServiceWorkerRegistration einen neuen ServiceWorkerRegistration.installing-Worker bekommt.

message

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

messageerror

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

notificationclick

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

notificationclose

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

paymentrequest Experimentell

Wird in einer Zahlungs-App ausgelöst, wenn ein Zahlungsfluss auf der Händler-Website über die Methode PaymentRequest.show() initiiert wurde.

sync

Wird ausgelöst, wenn ein Aufruf von SyncManager.register von einer Service Worker-Client-Seite durchgeführt wird. Der Versuch zur Synchronisation erfolgt entweder sofort, wenn das Netzwerk verfügbar ist, oder sobald das Netzwerk verfügbar wird.

periodicsync Experimentell

Tritt in regelmäßigen Abständen auf, die bei der Registrierung eines PeriodicSyncManager angegeben wurden.

push

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

pushsubscriptionchange

Tritt auf, wenn ein Push-Abo ungültig geworden ist oder dabei ist, ungültig zu werden (z. B. wenn ein Push-Dienst eine Ablaufzeit festlegt).

Beispiele

Dieser Codeausschnitt stammt aus dem Beispiel service worker prefetch sample (siehe prefetch example live.) Der onfetch-Event-Handler überwacht das fetch-Ereignis. Wenn dieses ausgelöst wird, gibt der Code ein Promise zurück, das zur ersten passenden Anfrage im Cache-Objekt aufgelöst wird. Falls keine Übereinstimmung gefunden wird, holt der Code eine Antwort aus dem Netzwerk.

Der Code behandelt ebenfalls Ausnahmen, die von der fetch()-Operation geworfen werden. Beachten Sie, dass eine HTTP-Fehlerantwort (z. B. 404) keine Ausnahme auslöst. Sie wird ein normales Antwortobjekt zurückgeben, in dem der entsprechende Fehlercode gesetzt ist.

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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
ServiceWorkerGlobalScope
abortpayment event
ExperimentalNon-standard
activate event
backgroundfetchabort event
Experimental
backgroundfetchclick event
Experimental
backgroundfetchfail event
Experimental
backgroundfetchsuccess event
Experimental
canmakepayment event
Experimental
clients
contentdelete event
Experimental
cookieStore
cookiechange event
Experimental
fetch event
install event
message event
messageerror event
notificationclick event
notificationclose event
paymentrequest event
Experimental
periodicsync event
Experimental
push event
pushsubscriptionchange event
registration
serviceWorker
skipWaiting
sync event

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Experimental. Expect behavior to change in the future.
Non-standard. Check cross-browser support before using.
See implementation notes.

Siehe auch