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 beachten, dass der Zustand eines Service Workers nicht über den Beendigungs/Neustart-Zyklus hinaus erhalten bleibt, daher sollte jeder Ereignishandler davon ausgehen, dass er mit einem nackten, standardmäßigen globalen Zustand aufgerufen wird.
Sobald ein Service Worker erfolgreich registriert ist, kann und wird er im Leerlauf beendet, um Speicher und Prozessorleistung zu sparen. Ein aktiver Service Worker wird automatisch neu gestartet, um auf Ereignisse zu reagieren, wie z.B. fetch
oder message
.
Darüber hinaus sind synchrone Anfragen innerhalb eines Service Workers nicht erlaubt — es können nur asynchrone Anfragen, wie solche, die über die fetch()
Methode initiiert werden, verwendet werden.
Dieses Interface erbt vom WorkerGlobalScope
Interface und dessen Elterninterface EventTarget
.
Instanz-Eigenschaften
Dieses Interface erbt Eigenschaften vom WorkerGlobalScope
Interface und dessen Elterninterface EventTarget
.
ServiceWorkerGlobalScope.clients
Schreibgeschützt-
Enthält 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-
Enthält das
ServiceWorkerRegistration
Objekt, das die Registrierung des Service Workers darstellt. ServiceWorkerGlobalScope.serviceWorker
Schreibgeschützt-
Enthält das
ServiceWorker
Objekt, das den Service Worker repräsentiert.
Instanz-Methoden
Dieses Interface erbt Methoden vom WorkerGlobalScope
Interface und dessen Elterninterface EventTarget
.
ServiceWorkerGlobalScope.skipWaiting()
-
Ermöglicht es der aktuellen Service Worker Registrierung, von der wartenden in die aktive Phase überzugehen, während Service Worker Clients sie nutzen.
Ereignisse
Dieses Ereignis kann mit addEventListener()
überwacht werden oder durch Zuweisung eines Ereignislisteners zur oneventname
Eigenschaft dieses Interfaces.
activate
-
Tritt auf, wenn eine
ServiceWorkerRegistration
einen neuenServiceWorkerRegistration.active
Worker erhält. backgroundfetchabort
Experimentell-
Wird ausgelöst, wenn eine Background Fetch Operation vom Benutzer oder der App abgebrochen wurde.
backgroundfetchclick
Experimentell-
Wird ausgelöst, wenn der Benutzer auf die Benutzeroberfläche einer Background Fetch Operation klickt.
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 einem Payment App Service Worker ausgelöst, um zu prüfen, ob er bereit ist, eine Zahlung durchzuführen. 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 Cookie-Änderung stattgefunden hat, 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 neuenServiceWorkerRegistration.installing
Worker erhält. message
-
Tritt auf, wenn eingehende Nachrichten empfangen werden. Kontrollierte Seiten können die
MessagePort.postMessage()
Methode 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 Payment App ausgelöst, wenn ein Zahlungsvorgang auf der Händler-Website über die
PaymentRequest.show()
Methode eingeleitet wurde. sync
-
Wird ausgelöst, wenn ein Aufruf an
SyncManager.register
von einer Service Worker Client-Seite aus erfolgt. Der Versuch zu synchronisieren wird entweder sofort unternommen, wenn das Netzwerk verfügbar ist, oder sobald das Netzwerk verfügbar wird. periodicsync
Experimentell-
Tritt in periodischen Intervallen auf, die bei der Registrierung eines
PeriodicSyncManager
angegeben 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 ist, ungültig zu werden (z.B. wenn ein Push-Dienst eine Ablaufzeit setzt).
Beispiele
Dieses Codebeispiel stammt aus dem Service Worker Prefetch Sample (siehe Prefetch-Beispiel live.) Der onfetch
Ereignishandler lauscht auf das fetch
Ereignis. Wenn es ausgelöst wird, gibt der Code ein Promise zurück, das sich zur ersten übereinstimmenden 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 geworfen werden. Beachten Sie, dass eine HTTP-Fehlerantwort (z.B. 404) keine Ausnahme auslöst. Es wird ein normales Antwortobjekt zurückgegeben, das den entsprechenden Fehlercode gesetzt hat.
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 |