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.
addEventListener("messageerror", (event) => { })
onmessageerror = (event) => { }
Ereignistyp
Ein MessageEvent
. Erbt von Event
.
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 einServiceWorker
-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:
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:
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:
const channel = new BroadcastChannel("hello");
channel.postMessage({ data: new SharedArrayBuffer(1024) });
Seite B führt den folgenden Code aus:
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
Loading…
Siehe auch
- Verwandte Ereignisse:
message
.