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 des ServiceWorkerGlobalScope-Interfaces tritt auf, wenn eingehende Nachrichten empfangen werden. Kontrollierte Seiten können die Methode ServiceWorker.postMessage() verwenden, um Nachrichten an Service Worker zu senden. Der Service Worker kann optional eine Antwort über die Client.postMessage() senden, die der kontrollierten Seite entspricht.
Dieses Ereignis ist nicht stornierbar und wird nicht gebubbelt.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener(), oder setzen Sie eine Event-Handler-Eigenschaft.
addEventListener("message", (event) => { })
onmessage = (event) => { }
Ereignistyp
Ein ExtendableMessageEvent. Erbt von ExtendableEvent.
Beispiele
Im folgenden Beispiel erhält eine Seite Zugriff auf das ServiceWorker-Objekt über ServiceWorkerRegistration.active und ruft dann die Funktion postMessage() 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 hört:
// 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 auf die Nachricht mithilfe von onmessage hören:
// 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> |