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;
}

有关完整的运行示例,请参阅我们在 GitHub 上的通道消息基本演示也可以在线运行)。

规范

规范
HTML 标准
# 消息通道

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅