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, die nicht deserialisiert werden kann, auf dem Kanal ankommt.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignisbehandler-Eigenschaft.

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

onmessageerror = (event) => { }

Ereignistyp

Ein MessageEvent. Erbt von Event.

Event MessageEvent

Beispiele

Hören auf messageerror-Ereignisse

Dieser Code verwendet addEventListener(), um auf Nachrichten und Fehler zu hören:

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

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

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

Dasselbe, jedoch mit den Ereignisbehandler-Eigenschaften onmessage und onmessageerror:

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

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

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

Versuch, Speicher zu teilen

Ein häufiger Grund für messageerror-Ereignisse ist der Versuch, ein SharedArrayBuffer-Objekt oder eine Pufferansicht, die von einem solchen unterstützt wird, über Agent-Clustern hinweg zu senden. Der folgende Code demonstriert 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");
});

Dann wird Seite B ein messageerror-Ereignis erhalten, wenn versucht wird, die von Seite A gesendete Nachricht zu deserialisieren.

Spezifikationen

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

Browser-Kompatibilität

Siehe auch