MessageChannel()
MessageChannel
接口的 MessageChannel()
构造函数返回一个新的 MessageChannel
对象,返回的对象中包含两个 MessagePort
对象。
备注: 此特性在 Web Worker 中可用
语法
var channel = new MessageChannel();
返回值
一个新创建的 MessageChannel
对象。
例子
在下面的代码块中,你会看到一个由 MessageChannel.MessageChannel
构造函数创建的新 Channel. 当 IFrame 被加载后,我们使用 MessagePort.postMessage
(en-US) 把 port2
和一条消息一起发送给 IFrame. 然后 handleMessage
回调响应 IFrame 发回的消息(使用 MessagePort.onmessage
),并把它渲染到页面段落中。MessageChannel.port1
用来监听,当消息到达时,会进行处理。
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 basic demo (在线运行)。
规范
Specification |
---|
HTML Standard # dom-messagechannel-dev |
浏览器兼容性
BCD tables only load in the browser