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

View in English Always switch to English

ServiceWorkerContainer: messageerror-Ereignis

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2023 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 in Web Workers verfügbar.

Das messageerror-Ereignis wird für den ServiceWorkerContainer ausgelöst, wenn eine eingehende Nachricht, die an den zugehörigen Worker gesendet wurde, nicht deserialisiert werden kann.

Dieses Ereignis kann nicht abgebrochen werden und wird nicht weitergereicht.

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

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

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

js
onmessageerror = (event) => { }

Ereignistyp

Ein MessageEvent. Erbt von Event.

Event MessageEvent

Beispiele

In diesem Beispiel ermittelt der Service Worker die ID des Clients aus einem fetch-Ereignis und sendet ihm anschließend mit Client.postMessage eine Nachricht:

js
// service-worker.js
async function messageClient(clientId) {
  const client = await self.clients.get(clientId);
  client.postMessage("Hi client!");
}

self.addEventListener("fetch", (event) => {
  messageClient(event.clientId);
  event.respondWith(() => {
    // …
  });
});

Der Service Worker kann auf Fehler bei der Deserialisierung der Nachricht reagieren, indem er auf das messageerror-Ereignis lauscht:

js
// main.js
navigator.serviceWorker.addEventListener("messageerror", (event) => {
  console.error("Receive message from service worker failed!");
});

Alternativ kann das Skript mithilfe von onmessageerror auf Fehler bei der Deserialisierung der Nachricht reagieren. Beachten Sie jedoch, dass dadurch gegebenenfalls andere mit onmessageerror hinzugefügte Event-Listener ersetzt werden:

js
// main.js
navigator.serviceWorker.onmessageerror = (event) => {
  console.error("Receive message from service worker failed!");
};

Spezifikationen

Spezifikation
Service Workers Nightly
# dom-serviceworkerglobalscope-onmessageerror

Browser-Kompatibilität

Siehe auch