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():
addEventListener("messageerror", (event) => { })
Alternativ können Sie die Event-Handler-Eigenschaft der Schnittstelle zuweisen:
onmessageerror = (event) => { }
Ereignistyp
Ein MessageEvent. Erbt von Event.
Beispiele
>Auf messageerror-Ereignisse lauschen
Dieser Code verwendet addEventListener(), um auf Nachrichten und Fehler zu lauschen:
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):
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:
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");
});
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
- Verwandte Ereignisse:
message.