MessageChannel
注意:此功能在Web Workers中可用。
MessageChannel
是通道消息 API的一个接口,它允许我们创建一个新的消息通道,并通过其两个MessagePort
属性发送数据。
构造函数
MessageChannel()
-
返回一个新的
MessageChannel
对象,该对象包含两个新的MessagePort
对象。
实例属性
MessageChannel.port1
只读-
返回通道的 port1。
MessageChannel.port2
只读-
返回通道的 port2。
示例
在以下示例中,您可以看到使用MessageChannel()
构造函数创建了一个新通道。
当 IFrame 加载完成后,我们为MessageChannel.port1
注册了一个onmessage
处理程序,并将MessageChannel.port2
传输到 IFrame,同时使用window.postMessage
方法发送一条消息。
当从 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 的浏览器中加载。