ServiceWorkerGlobalScope: message-Ereignis - Web-APIs | MDN

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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():

js
addEventListener("message", (event) => { })

Alternativ können Sie die Event-Handler-Eigenschaft der Schnittstelle zuweisen:

js
onmessage = (event) => { }

Ereignistyp

Ein ExtendableMessageEvent. Erbt von ExtendableEvent.

Event ExtendableEvent ExtendableMessageEvent

Beispiele

Im folgenden Beispiel erhält eine Seite über ServiceWorkerRegistration.active Zugriff auf ein ServiceWorker-Objekt und ruft anschließend dessen postMessage()-Funktion auf.

js
// 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:

js
// 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:

js
// 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>

Browser-Kompatibilität

Siehe auch