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