--- title: MessageChannel.port2 slug: Web/API/MessageChannel/port2 translation_of: Web/API/MessageChannel/port2 ---
{{APIRef("HTML DOM")}}
{{domxref("MessageChannel")}}接口的 port2 是一个只读属性,返回消息通道的第二个端口,该端口连接到通道另一端的上下文,也就是发送消息时的目的地。
{{AvailableInWorkers}}
channel.port2;
表示通道第二个端口的一个{{domxref("MessagePort")}}对象,该端口附加到通道另一端的上下文。
如下代码所示,通过{{domxref("MessageChannel()", "MessageChannel.MessageChannel")}}构造函数创建了一个新的通道。当IFrame加载完毕,我们使用{{domxref("MessagePort.postMessage")}}将一条消息以及port2传递给IFrame。handleMessage处理程序响应从IFrame发回的消息(使用 {{domxref("MessagePort.onmessage")}}),将其放入段落中。{{domxref("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 (run it live too).
| Specification | Status | Comment |
|---|---|---|
| {{SpecName('HTML WHATWG', 'web-messaging.html#dom-messagechannel-port2', 'port2')}} | {{Spec2('HTML WHATWG')}} |