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.
dataSchreibgeschützt-
Die Daten, die vom Nachrichten-Emitter gesendet wurden.
originSchreibgeschützt-
Ein String, der den Ursprung des Nachrichten-Emitters darstellt.
lastEventIdSchreibgeschützt-
Ein String, der eine eindeutige ID für das Ereignis darstellt.
sourceSchreibgeschützt-
Eine Message Event Source, die entweder ein WindowProxy, ein
MessagePort, oder einServiceWorker-Objekt ist, das den Nachrichten-Emitter darstellt. portsSchreibgeschü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.