BroadcastChannel: sự kiện message

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 message của giao diện BroadcastChannel được kích hoạt khi một thông điệp đế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.

js
addEventListener("message", (event) => { })

onmessage = (event) => { }

Kiểu sự kiện

Một MessageEvent. Kế thừa từ Event.

Event MessageEvent

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.

data Read only

Dữ liệu được bộ phát thông điệp gửi đi.

origin Read only

Một chuỗi biểu diễn nguồn gốc của bộ phát thông điệp.

lastEventId Read only

Một chuỗi biểu diễn mã nhận dạng duy nhất của sự kiện.

source Read only

Một nguồn sự kiện thông điệp, là một đối tượng WindowProxy, MessagePort hoặc ServiceWorker biểu diễn bộ phát thông điệp.

ports Read only

Một mảng các đối tượng MessagePort biể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ụ

Trong ví dụ này có một <iframe> "sender" phát đi nội dung của một <textarea> khi người dùng nhấn nút. Có hai iframe "receiver" lắng nghe thông điệp quảng bá và ghi kết quả vào một phần tử <div>.

Sender

js
const channel = new BroadcastChannel("example-channel");
const messageControl = document.querySelector("#message");
const broadcastMessageButton = document.querySelector("#broadcast-message");

broadcastMessageButton.addEventListener("click", () => {
  channel.postMessage(messageControl.value);
});

Receiver 1

js
const channel = new BroadcastChannel("example-channel");
channel.addEventListener("message", (event) => {
  received.textContent = event.data;
});

Receiver 2

js
const channel = new BroadcastChannel("example-channel");
channel.addEventListener("message", (event) => {
  received.textContent = event.data;
});

Kết quả

Thông số kỹ thuật

Thông số kỹ thuật
HTML
# event-message
HTML
# handler-broadcastchannel-onmessage

Tương thích trình duyệt

Xem thêm