--- title: MessageChannel slug: Web/API/MessageChannel tags: - API - Channel Messaging API - Interface - MessageChannel - Reference - web messaging translation_of: Web/API/MessageChannel ---
{{APIRef("HTML DOM")}}
Channel Messaging API的MessageChannel
接口允许我们创建一个新的消息通道,并通过它的两个{{domxref("MessagePort")}} 属性发送数据。
{{AvailableInWorkers}}
返回一个带有两个MessagePort属性的MessageChannel新对象。
在以下代码块中,您可以看到使用MessageChannel构造函数实例化了一个channel对象。当iframe加载完毕,我们使用MessagePort.postMessage方法把一条消息和MessageChannel.port2传递给iframe。handleMessage处理程序将会从iframe中(使用MessagePort.onmessage监听事件)接收到信息,将数据其放入innerHTML中。
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 (run it live too).
Specification | Status | Comment |
---|---|---|
{{SpecName('HTML WHATWG', '#message-channels','MessageChannel')}} | {{Spec2('HTML WHATWG')}} | No difference from {{SpecName("HTML5 Web Messaging")}}. |