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 Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨März 2022⁩.

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, im Kanal ankommt.

Syntax

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

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

onmessageerror = (event) => { }

Ereignistyp

Ein MessageEvent. Erbt von Event.

Event MessageEvent

Ereigniseigenschaften

Zusätzlich zu den unten aufgeführten Eigenschaften sind die Eigenschaften der übergeordneten Schnittstelle, Event, verfügbar.

data Schreibgeschützt

Die Daten, die vom Nachrichten-Emitter gesendet wurden.

origin Schreibgeschützt

Ein String, der den Ursprung des Nachrichten-Emitters darstellt.

lastEventId Schreibgeschützt

Ein String, der eine eindeutige ID für das Ereignis darstellt.

source Schreibgeschützt

Eine Message Event Source, die entweder ein WindowProxy, ein MessagePort, oder ein ServiceWorker-Objekt ist, das den Nachrichten-Emitter darstellt.

ports Schreibgeschützt

Ein Array von MessagePort-Objekten, die die Ports darstellen, die mit dem Kanal assoziiert sind, durch den die Nachricht gesendet wird (wo relevant, z.B. in der Kanal-Messaging oder beim Senden einer Nachricht an einen Shared Worker).

Beispiele

Auf messageerror-Ereignisse hören

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, aber unter Verwendung der onmessage- und onmessageerror-Ereignis-Handler-Eigenschaften:

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

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

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

Versuch, Speicher freizugeben

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-Cluster 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 empfangen, wenn sie versucht, die von Seite A gesendete Nachricht zu deserialisieren.

Spezifikationen

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

Browser-Kompatibilität

Siehe auch