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

View in English Always switch to English

BroadcastChannel: 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 2022 browserübergreifend verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Das messageerror-Ereignis der BroadcastChannel-Schnittstelle wird ausgelöst, wenn eine Nachricht im Kanal eintrifft, die nicht deserialisiert werden kann.

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

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

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

js
onmessageerror = (event) => { }

Ereignistyp

Ein MessageEvent. Erbt von Event.

Event MessageEvent

Beispiele

Auf messageerror-Ereignisse lauschen

Dieser Code verwendet addEventListener(), um auf Nachrichten und Fehler zu lauschen:

js
const channel = new BroadcastChannel("example-channel");

channel.addEventListener("message", (event) => {
  received.textContent = event.data;
});

channel.addEventListener("messageerror", (event) => {
  console.error(event);
});

Dasselbe mit den Event-Handler-Eigenschaften onmessage und onmessageerror (beachten Sie jedoch, dass dadurch gegebenenfalls andere über onmessage und onmessageerror hinzugefügte Event-Listener ersetzt werden):

js
const channel = new BroadcastChannel("example-channel");

channel.onmessage = (event) => {
  received.textContent = event.data;
};

channel.onmessageerror = (event) => {
  console.log(event);
};

Versuch, Speicher gemeinsam zu nutzen

Eine häufige Ursache für messageerror-Ereignisse ist der Versuch, ein SharedArrayBuffer-Objekt oder eine darauf basierende Buffer-View zwischen Agent-Clustern zu senden. Der folgende Code veranschaulicht dies.

Seite A führt den folgenden Code aus:

js
const channel = new BroadcastChannel("hello");
channel.postMessage({ data: new SharedArrayBuffer(1024) });

Seite B führt den folgenden Code aus:

js
const channel = new BroadcastChannel("hello");
channel.addEventListener("messageerror", (event) => {
  console.error("Message error");
});

Wenn Seite B versucht, die von Seite A gesendete Nachricht zu deserialisieren, empfängt sie ein messageerror-Ereignis.

Spezifikationen

Spezifikation
HTML
# event-messageerror
HTML
# handler-broadcastchannel-onmessageerror

Browser-Kompatibilität

Siehe auch