MessagePort
注意:此功能在 Web Workers 中可用。
MessagePort
是 通道消息 API 的一个接口,表示 MessageChannel
的两个端口之一,允许从一个端口发送消息并在另一个端口监听消息的到达。
MessagePort
是一个 可传输对象。
实例方法
继承自其父级 EventTarget
的方法.
postMessage()
-
从端口发送消息,并可选地将对象的拥有权转移到其他浏览上下文。
start()
-
开始发送在端口上排队的消息(仅在使用
EventTarget.addEventListener
时需要;在使用onmessage
时是隐含的)。 close()
-
断开端口连接,使其不再处于活动状态。
事件
继承自其父级 EventTarget
的事件.
message
-
当
MessagePort
对象收到消息时触发。 messageerror
-
当
MessagePort
对象收到无法反序列化的消息时触发。
示例
在下面的示例中,您可以看到使用 MessageChannel()
构造函数创建了一个新的通道。
当 IFrame 加载完毕后,我们为 MessageChannel.port1
注册了一个 onmessage
处理程序,并将 MessageChannel.port2
使用 window.postMessage
方法连同消息一起传输到 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;
}
规范
规范 |
---|
HTML 标准 # 消息端口 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。