--- title: MessagePort.onmessage slug: Web/API/MessagePort/onmessage translation_of: Web/API/MessagePort/onmessage ---
{{APIRef("HTML DOM")}}

 {{domxref("MessagePort")}} 接口的 onmessage 事件处理程序是一个{{domxref("EventListener")}}, 当在端口上触发一个类型为 message 的{{domxref("MessageEvent")}} 时被调用 - 即,当端口接收到消息时。

{{AvailableInWorkers}}

Syntax

channel.onmessage = function() { ... };

Example

In the following code block, you can see a new channel being created using the {{domxref("MessageChannel()", "MessageChannel.MessageChannel")}} constructor. When the IFrame has loaded, we pass {{domxref("MessageChannel.port2")}} to the IFrame using {{domxref("MessagePort.postMessage")}} along with a message. The handleMessage handler then responds to a message being sent back from the IFrame using onmessage, putting it into a paragraph — {{domxref("MessageChannel.port1")}} is listened to, to check when the message arrives.

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

For a full working example, see our channel messaging basic demo on Github (run it live too).

Specifications

Specification Status Comment
{{SpecName('HTML WHATWG', '#handler-messageport-onmessage','onmessage')}} {{Spec2('HTML WHATWG')}} No difference from {{SpecName("HTML5 Web Messaging")}}.
{{SpecName('HTML5 Web Messaging', '#handler-messageport-onmessage','onmessage')}} {{Spec2('HTML5 Web Messaging')}} W3C version of the spec

Browser compatibility

{{CompatibilityTable}}
Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 4 {{CompatVersionUnknown}} {{CompatNo}} 10.0 10.6 5
Available in workers {{CompatVersionUnknown}} {{CompatUnknown}} {{CompatGeckoDesktop(41)}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) Firefox OS (Gecko) IE Phone Opera Mobile Safari Mobile
Basic support 4.4 4 {{CompatVersionUnknown}} {{CompatNo}} {{CompatNo}} 10.0 11.5 5.1
Available in workers {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatUnknown}} {{CompatGeckoMobile(41)}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}

See also