MessageChannel()

MessageChannel 接口的 MessageChannel() 构造函数返回一个新的 MessageChannel 对象,返回的对象中包含两个 MessagePort 对象。

备注: 此特性在 Web Worker 中可用

语法

js
new MessageChannel();

返回值

一个新创建的 MessageChannel 对象。

例子

在下面的代码块中,你会看到一个由 MessageChannel.MessageChannel 构造函数创建的新 Channel. 当 IFrame 被加载后,我们使用 MessagePort.postMessage (en-US)port2 和一条消息一起发送给 IFrame. 然后 handleMessage 回调响应 IFrame 发回的消息(使用 MessagePort.onmessage),并把它渲染到页面段落中。MessageChannel.port1 用来监听,当消息到达时,会进行处理。

js
var channel = new MessageChannel();
var para = document.querySelector("p");

var ifr = document.querySelector("iframe");
var otherWindow = ifr.contentWindow;

ifr.addEventListener("load", iframeLoaded, false);

function iframeLoaded() {
  otherWindow.postMessage("Hello from the main page!", "*", [channel.port2]);
}

channel.port1.onmessage = handleMessage;
function handleMessage(e) {
  para.innerHTML = e.data;
}

有关更完整的运行示例,可以在 GitHub 上查看 channel messaging 基本示例也可以在线运行示例)。

规范

Specification
HTML Standard
# dom-messagechannel-dev

浏览器兼容性

BCD tables only load in the browser

参见