Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
ServiceWorkerGlobalScope: message-Ereignis
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2018 browserübergreifend verfügbar.
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 message-Ereignis der Schnittstelle ServiceWorkerGlobalScope tritt ein, wenn Nachrichten empfangen werden. Kontrollierte Seiten können mit der Methode ServiceWorker.postMessage() Nachrichten an Service Worker senden. Der Service Worker kann der kontrollierten Seite optional über Client.postMessage() antworten.
Dieses Ereignis kann nicht abgebrochen werden und wird nicht weitergereicht.
Syntax
Verwenden Sie den Ereignisnamen in addEventListener():
addEventListener("message", (event) => { })
Alternativ können Sie die Event-Handler-Eigenschaft der Schnittstelle zuweisen:
onmessage = (event) => { }
Ereignistyp
Ein ExtendableMessageEvent. Erbt von ExtendableEvent.
Beispiele
Im folgenden Beispiel erhält eine Seite über ServiceWorkerRegistration.active Zugriff auf ein ServiceWorker-Objekt und ruft anschließend dessen postMessage()-Funktion auf.
// main.js
if (navigator.serviceWorker) {
navigator.serviceWorker.register("service-worker.js");
navigator.serviceWorker.addEventListener("message", (event) => {
// event is a MessageEvent object
console.log(`The service worker sent me a message: ${event.data}`);
});
navigator.serviceWorker.ready.then((registration) => {
registration.active.postMessage("Hi service worker");
});
}
Der Service Worker kann die Nachricht empfangen, indem er auf das message-Ereignis wartet:
// service-worker.js
addEventListener("message", (event) => {
// event is an ExtendableMessageEvent object
console.log(`The client sent me a message: ${event.data}`);
event.source.postMessage("Hi client");
});
Alternativ kann das Skript mit onmessage auf die Nachricht warten. Beachten Sie jedoch, dass dadurch andere mit onmessage hinzugefügte Event-Listener ersetzt werden, sofern vorhanden:
// service-worker.js
self.onmessage = (event) => {
// event is an ExtendableMessageEvent object
console.log(`The client sent me a message: ${event.data}`);
event.source.postMessage("Hi client");
};
Spezifikationen
| Spezifikation |
|---|
| Service Workers Nightly> # eventdef-serviceworkerglobalscope-message> |
| Service Workers Nightly> # dom-serviceworkerglobalscope-onmessage> |
