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.
Die ServiceWorkerGlobalScope
-Schnittstelle der Service Worker API repräsentiert den globalen Ausführungskontext eines Service Workers.
Entwickler sollten berücksichtigen, dass der Zustand eines ServiceWorkers nicht über den Beenden-/Neustartszyklus beibehalten wird. Jedes Ereignishandling sollte davon ausgehen, dass es mit einem nackten, standardmäßigen globalen Zustand aufgerufen wird.
Einmal erfolgreich registriert, kann und wird ein Service Worker terminiert werden, wenn er im Leerlauf ist, um Speicher und Prozessorleistung zu sparen. 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 — es können nur asynchrone Anfragen, wie die über die fetch()
-Methode initiierten, verwendet werden.
Diese Schnittstelle erbt von der WorkerGlobalScope
-Schnittstelle und ihrem Elternteil EventTarget
.
Instanz-Eigenschaften
Diese Schnittstelle erbt Eigenschaften von der WorkerGlobalScope
-Schnittstelle und ihrem Elternteil 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 darstellt.
Instanz-Methoden
Diese Schnittstelle erbt Methoden von der WorkerGlobalScope
-Schnittstelle und ihrem Elternteil EventTarget
.
ServiceWorkerGlobalScope.skipWaiting()
-
Ermöglicht es der aktuellen Service Worker-Registrierung, vom Wartezustand in den aktiven Zustand überzugehen, während es von Service Worker-Clients verwendet wird.
Ereignisse
Hören Sie auf dieses Ereignis mit addEventListener()
oder durch Zuweisung eines Ereignis-Listeners zur oneventname
-Eigenschaft dieser Schnittstelle.
activate
-
Tritt auf, wenn eine
ServiceWorkerRegistration
einen neuenServiceWorkerRegistration.active
Worker erwirbt. backgroundfetchabort
Experimentell-
Wird ausgelöst, wenn ein Hintergrundabruf-Vorgang vom Benutzer oder der App abgebrochen wurde.
backgroundfetchclick
Experimentell-
Wird ausgelöst, wenn ein Benutzer auf die Benutzeroberfläche für einen Hintergrundabruf-Vorgang geklickt hat.
backgroundfetchfail
Experimentell-
Wird ausgelöst, wenn mindestens eine der Anfragen in einem Hintergrundabruf-Vorgang fehlgeschlagen ist.
backgroundfetchsuccess
Experimentell-
Wird ausgelöst, wenn alle Anfragen in einem Hintergrundabruf-Vorgang erfolgreich waren.
canmakepayment
Experimentell-
Wird auf dem Service Worker einer Payment-App ausgelöst, um zu prüfen, ob sie bereit ist, eine Zahlung abzuwickeln. Konkreter 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 erfolgt, 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 erwirbt. message
-
Tritt auf, wenn eingehende Nachrichten empfangen werden. Kontrollierte Seiten können die
MessagePort.postMessage()
-Methode verwenden, um Nachrichten an Service Worker 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 auf einer Payment-App ausgelöst, wenn ein Zahlungsablauf auf der Händler-Website über die
PaymentRequest.show()
-Methode initiiert wurde. sync
-
Wird ausgelöst, wenn ein Aufruf an
SyncManager.register
von einer Service Worker-Clientseite ausgelöst 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 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-Abonnement ungültig geworden ist oder kurz davor ist, ungültig zu werden (z. B. wenn ein Push-Dienst eine Ablaufzeit festlegt).
Beispiele
Dieses Codebeispiel stammt aus dem Service Worker Prefetch-Beispiel (siehe Prefetch-Beispiel live). Der onfetch
-Ereignishandler horcht auf das fetch
-Ereignis. Wenn es ausgelöst wird, gibt der Code ein Versprechen zurück, das in die erste übereinstimmende Anfrage im Cache
-Objekt aufgelöst wird. 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. 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 |