BroadcastChannel: message 事件
注意:此功能在 Web Workers 中可用。
BroadcastChannel 介面的 message 事件在透過該通道接收到訊息時觸發。
語法
在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。
js
addEventListener("message", (event) => { })
onmessage = (event) => { }
事件型別
一個 MessageEvent。繼承自 Event。
事件屬性
除了下面列出的屬性之外,父介面 Event 的屬性也可使用。
data只讀-
由訊息傳送者傳送的資料。
origin只讀-
一個字串,表示訊息傳送者的源。
lastEventId只讀-
一個字串,表示事件的唯一 ID。
source只讀-
一個訊息事件源,它可以是 WindowProxy、
MessagePort或ServiceWorker物件,用於表示訊息的傳送者。 ports只讀-
一個
MessagePort物件陣列,表示訊息傳送通道(如果適用,例如在通道訊息傳遞或向共享工作者傳送訊息時)關聯的埠。
示例
在此示例中,有一個“傳送者” <iframe>,當用戶單擊按鈕時,它會廣播 <textarea> 的內容。有兩個“接收者” iframe 監聽廣播訊息,並將結果寫入 <div> 元素。
傳送者
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);
});
接收者 1
js
const channel = new BroadcastChannel("example-channel");
channel.addEventListener("message", (event) => {
received.textContent = event.data;
});
接收者 2
js
const channel = new BroadcastChannel("example-channel");
channel.addEventListener("message", (event) => {
received.textContent = event.data;
});
結果
規範
| 規範 |
|---|
| HTML # event-message |
| HTML # handler-broadcastchannel-onmessage |
瀏覽器相容性
載入中…
另見
- 相關事件:
messageerror。