BroadcastChannel: sự kiện messageerror
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.
Note: This feature is available in Web Workers.
Sự kiện messageerror của giao diện BroadcastChannel được kích hoạt khi một thông điệp không thể giải tuần tự đến trên kênh.
Cú pháp
Dùng tên sự kiện này trong các phương thức như addEventListener(), hoặc thiết lập một thuộc tính xử lý sự kiện.
addEventListener("messageerror", (event) => { })
onmessageerror = (event) => { }
Kiểu sự kiện
Một MessageEvent. Kế thừa từ Event.
Thuộc tính sự kiện
Ngoài các thuộc tính được liệt kê bên dưới, còn có các thuộc tính từ giao diện cha Event.
dataRead only-
Dữ liệu được bộ phát thông điệp gửi đi.
originRead only-
Một chuỗi biểu diễn nguồn gốc của bộ phát thông điệp.
lastEventIdRead only-
Một chuỗi biểu diễn mã nhận dạng duy nhất của sự kiện.
sourceRead only-
Một nguồn sự kiện thông điệp, là một đối tượng WindowProxy,
MessagePorthoặcServiceWorkerbiểu diễn bộ phát thông điệp. portsRead only-
Một mảng các đối tượng
MessagePortbiểu diễn các cổng gắn với kênh mà thông điệp đang được gửi qua (khi phù hợp, ví dụ trong channel messaging hoặc khi gửi thông điệp tới shared worker).
Ví dụ
>Lắng nghe sự kiện messageerror
Đoạn mã này dùng addEventListener() để lắng nghe thông điệp và lỗi:
const channel = new BroadcastChannel("example-channel");
channel.addEventListener("message", (event) => {
received.textContent = event.data;
});
channel.addEventListener("messageerror", (event) => {
console.error(event);
});
Đoạn mã sau có cùng chức năng nhưng dùng các thuộc tính xử lý sự kiện onmessage và onmessageerror:
const channel = new BroadcastChannel("example-channel");
channel.onmessage = (event) => {
received.textContent = event.data;
};
channel.onmessageerror = (event) => {
console.log(event);
};
Thử chia sẻ bộ nhớ
Một nguyên nhân phổ biến gây ra sự kiện messageerror là cố gắng gửi một đối tượng SharedArrayBuffer, hoặc một khung nhìn bộ đệm được hậu thuẫn bởi đối tượng đó, qua các cụm agent. Đoạn mã sau minh họa điều này.
Trang A chạy đoạn mã sau:
const channel = new BroadcastChannel("hello");
channel.postMessage({ data: new SharedArrayBuffer(1024) });
Trang B chạy đoạn mã sau:
const channel = new BroadcastChannel("hello");
channel.addEventListener("messageerror", (event) => {
console.error("Message error");
});
Khi đó trang B sẽ nhận được một sự kiện messageerror khi cố gắng giải tuần tự thông điệp được gửi từ trang A.
Thông số kỹ thuật
| Specification |
|---|
| HTML> # event-messageerror> |
| HTML> # handler-broadcastchannel-onmessageerror> |
Tương thích trình duyệt
Xem thêm
- Sự kiện liên quan:
message.