MessagePort
注意:此功能在 Web Workers 中可用。
MessagePort 介面是 通道訊息 API 的一部分,代表 MessageChannel 的兩個埠之一,允許訊息從一個埠傳送,並在另一個埠接收。
MessagePort 是一個 可轉移物件。
例項方法
繼承自其父類 EventTarget 的方法。.
postMessage()-
從埠傳送訊息,並可選擇將物件的擁有權轉移給其他瀏覽上下文。
start()-
啟動埠上排隊的訊息的傳送(僅在使用
EventTarget.addEventListener時需要;使用onmessage時則隱含了此操作)。 close()-
斷開埠連線,使其不再處於活動狀態。
事件
繼承其父級 EventTarget 的事件。.
message-
當
MessagePort物件收到訊息時觸發。 messageerror-
當
MessagePort物件收到一條無法反序列化的訊息時觸發。
示例
在以下示例中,您可以看到使用 MessageChannel() 建構函式建立一個新的通道。
IFrame 載入完成後,我們為 MessageChannel.port1 註冊一個 onmessage 處理程式,並透過 window.postMessage 方法將 MessageChannel.port2 與一條訊息一起傳輸到 IFrame。
當收到來自 IFrame 的訊息時,onMessage 函式會將訊息輸出到一個段落中。
js
const channel = new MessageChannel();
const output = document.querySelector(".output");
const iframe = document.querySelector("iframe");
// Wait for the iframe to load
iframe.addEventListener("load", onLoad);
function onLoad() {
// Listen for messages on port1
channel.port1.onmessage = onMessage;
// Transfer port2 to the iframe
iframe.contentWindow.postMessage("Hello from the main page!", "*", [
channel.port2,
]);
}
// Handle messages received on port1
function onMessage(e) {
output.innerHTML = e.data;
}
有關完整的工作示例,請參閱 GitHub 上的 通道訊息傳遞基本演示(也可以線上執行)。
規範
| 規範 |
|---|
| HTML # message-ports |
瀏覽器相容性
載入中…