BroadcastChannel: messageerror イベント
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2022年3月.
メモ: この機能はウェブワーカー内で利用可能です。
messageerror は BroadcastChannel インターフェイスのイベントで、シリアル化の解除ができないメッセージがチャンネルに到着したときに発生します。
構文
このイベント名を addEventListener() のようなメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。
addEventListener("messageerror", (event) => { })
onmessageerror = (event) => { }
イベント型
MessageEvent です。 Event を継承しています。
イベントプロパティ
このインターフェイスは親である Event からプロパティを継承しています。
MessageEvent.data読取専用-
メッセージ送信元によって送信されたデータです。
MessageEvent.origin読取専用-
文字列で、メッセージ送信元のオリジンを表します。
MessageEvent.lastEventId読取専用-
文字列で、このイベントの一意の ID を表します。
MessageEvent.source読取専用-
メッセージイベントソース、すなわち WindowProxy、
MessagePort、ServiceWorkerの何れかのオブジェクトで、メッセージの送信元を表します。 MessageEvent.ports読取専用-
MessagePortオブジェクトの配列で、メッセージが送信されるチャンネルに関連するポートを表します(チャンネルメッセージングや、共有ワーカーにメッセージを送信する場合など、適切な場合)。
例
>messageerror イベントの待ち受け
このコードは addEventListener() を使用してメッセージとエラーを待ち受けします。
const channel = new BroadcastChannel("example-channel");
channel.addEventListener("message", (event) => {
received.textContent = event.data;
});
channel.addEventListener("messageerror", (event) => {
console.error(event);
});
上と同じですが、 onmessage と onmessageerror のイベントハンドラープロパティを使用します。
const channel = new BroadcastChannel("example-channel");
channel.onmessage = (event) => {
received.textContent = event.data;
};
channel.onmessageerror = (event) => {
console.log(event);
};
共有メモリーを使用した試行
messageerror イベントの一般的な原因は、SharedArrayBuffer オブジェクト、またはそれを裏付けとするバッファビューをエージェントクラスター間で送信しようとすることです。次のコードはその例を示しています。
ページ A では次のコードを実行します。
const channel = new BroadcastChannel("hello");
channel.postMessage({ data: new SharedArrayBuffer(1024) });
ページ B では次のコードを実行します。
const channel = new BroadcastChannel("hello");
channel.addEventListener("messageerror", (event) => {
console.error("Message error");
});
その後、ページ B はページ A から送信されたメッセージをシリアル化解除しようとすると、messageerror イベントを受信します。
仕様書
| Specification |
|---|
| HTML> # event-messageerror> |
| HTML> # handler-broadcastchannel-onmessageerror> |
ブラウザーの互換性
関連情報
- 関連イベント:
message