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 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.

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

onmessage = (event) => { }

Ereignistyp

Ein ExtendableMessageEvent. Erbt von ExtendableEvent.

Event ExtendableEvent ExtendableMessageEvent

Beispiele

Im folgenden Beispiel erhält eine Seite Zugriff auf das ServiceWorker-Objekt über ServiceWorkerRegistration.active und ruft dann die Funktion postMessage() 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 hört:

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 auf die Nachricht mithilfe von onmessage hören:

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