MessagePort

MessagePort interface of the 通道消息 API represents one of the two ports of a MessageChannel , allowing messages to be sent from one port and listening out for them arriving at the other.

注意: 此特征可用于 Web 工作者 .

方法

Inherits methods from its parent, EventTarget

postMessage()
Sends a message from the port, and optionally, transfers ownership of objects to other browsing contexts.
start()
Starts the sending of messages queued on the port (only needed when using EventTarget.addEventListener ; it is implied when using MessagePort.onmessage .)
close()
Disconnects the port, so it is no longer active.

事件处理程序

Inherits event handlers from its parent, EventTarget

onmessage
An EventListener called when MessageEvent of type message is fired on the port—that is, when the port receives a message.
onmessageerror
An EventListener called when a MessageEvent of type MessageError is fired—that is, when it receives a message that cannot be deserialized.

Events

message
Fired when a MessagePort object receives a message.
Also available via the onmessage 特性。
messageerror
Fired when a MessagePort object receives a message that can't be deserialized.
Also available via the onmessageerror 特性。

范例

In the following example, you can see a new channel being created using the MessageChannel() 构造函数。

When the IFrame has loaded, we register an onmessage handler for MessageChannel.port1 and transfer MessageChannel.port2 to the IFrame using the window.postMessage method along with a message.

When a message is received back from the IFrame, the onMessage function simply outputs the message to a paragraph.

var channel = new MessageChannel();
var output = document.querySelector('.output');
var iframe = document.querySelector('iframe');
// Wait for the iframe to load
iframe.addEventListener("load", onLoad);
function onLoad() {
  // Listen for messages on port1
  channel.port1.onmessage = onMessage;
  // Transfer port2 to the iframe
  iframe.contentWindow.postMessage('Hello from the main page!', '*', [channel.port2]);
}
// Handle messages received on port1
function onMessage(e) {
  output.innerHTML = e.data;
}
					

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

规范

规范 状态 Comment
HTML Living Standard
The definition of 'Message ports' in that specification.
实时标准

浏览器兼容性

更新 GitHub 上的兼容性数据
Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
MessagePort Chrome 4 Edge 12 Firefox Yes IE 10 Opera 10.6 Safari 5 WebView Android Yes Chrome Android 18 Firefox Android Yes Opera Android 11 Safari iOS 5.1 Samsung Internet Android 1.0
close Chrome 4 Edge 12 Firefox Yes IE 10 Opera 10.6 Safari 5 WebView Android Yes Chrome Android 18 Firefox Android 不支持 No Opera Android 11 Safari iOS 5.1 Samsung Internet Android 1.0
message event Chrome 4 Edge 12 Firefox Yes IE 10 Opera 10.6 Safari 5 WebView Android Yes Chrome Android 18 Firefox Android 不支持 No Opera Android 11.5 Safari iOS 5.1 Samsung Internet Android 1.0
messageerror event Chrome 60 Edge 18 Firefox 57 IE ? Opera 47 Safari ? WebView Android 60 Chrome Android 60 Firefox Android 57 Opera Android 47 Safari iOS ? Samsung Internet Android 8.0
onmessage Chrome 4 Edge 12 Firefox Yes IE 10 Opera 10.6 Safari 5 WebView Android Yes Chrome Android 18 Firefox Android 不支持 No Opera Android 11 Safari iOS 5.1 Samsung Internet Android 1.0
onmessageerror Chrome 60 Edge 18 Firefox 57 IE ? Opera 47 Safari ? WebView Android 60 Chrome Android 60 Firefox Android 57 Opera Android 44 Safari iOS ? Samsung Internet Android 8.0
postMessage Chrome 4 Edge 12 Firefox Yes IE 10 Opera 10.6 Safari 5 WebView Android Yes Chrome Android 18 Firefox Android 不支持 No Opera Android 11 Safari iOS 5.1 Samsung Internet Android 1.0
start Chrome 4 Edge 12 Firefox Yes IE 10 Opera 10.6 Safari 5 WebView Android Yes Chrome Android 18 Firefox Android 不支持 No Opera Android 11 Safari iOS 5.1 Samsung Internet Android 1.0
Available in workers Chrome Yes Edge 12 Firefox 41 IE Yes Opera Yes Safari Yes WebView Android Yes Chrome Android Yes Firefox Android 41 Opera Android Yes Safari iOS Yes Samsung Internet Android Yes

图例

完整支持
完整支持
不支持
不支持
兼容性未知
兼容性未知

另请参阅

  1. MessagePort
  2. 特性
    1. onmessage
    2. onmessageerror
  3. 方法
    1. close()
    2. postMessage()
    3. start()
  4. Events
    1. message
    2. messageerror
  5. 继承:
    1. EventTarget
  6. Related pages for HTML DOM
    1. BeforeUnloadEvent
    2. DOMStringMap
    3. ErrorEvent
    4. GlobalEventHandlers
    5. HTMLAnchorElement
    6. HTMLAreaElement
    7. HTMLAudioElement
    8. HTMLBRElement
    9. HTMLBaseElement
    10. HTMLBaseFontElement
    11. HTMLBodyElement
    12. HTMLButtonElement
    13. HTMLCanvasElement
    14. HTMLContentElement
    15. HTMLDListElement
    16. HTMLDataElement
    17. HTMLDataListElement
    18. HTMLDialogElement
    19. HTMLDivElement
    20. HTMLDocument
    21. HTMLElement
    22. HTMLEmbedElement
    23. HTMLFieldSetElement
    24. HTMLFormControlsCollection
    25. HTMLFormElement
    26. HTMLFrameSetElement
    27. HTMLHRElement
    28. HTMLHeadElement
    29. HTMLHeadingElement
    30. HTMLHtmlElement
    31. HTMLIFrameElement
    32. HTMLImageElement
    33. HTMLInputElement
    34. HTMLIsIndexElement
    35. HTMLKeygenElement
    36. HTMLLIElement
    37. HTMLLabelElement
    38. HTMLLegendElement
    39. HTMLLinkElement
    40. HTMLMapElement
    41. HTMLMediaElement
    42. HTMLMetaElement
    43. HTMLMeterElement
    44. HTMLModElement
    45. HTMLOListElement
    46. HTMLObjectElement
    47. HTMLOptGroupElement
    48. HTMLOptionElement
    49. HTMLOptionsCollection
    50. HTMLOutputElement
    51. HTMLParagraphElement
    52. HTMLParamElement
    53. HTMLPictureElement
    54. HTMLPreElement
    55. HTMLProgressElement
    56. HTMLQuoteElement
    57. HTMLScriptElement
    58. HTMLSelectElement
    59. HTMLShadowElement
    60. HTMLSourceElement
    61. HTMLSpanElement
    62. HTMLStyleElement
    63. HTMLTableCaptionElement
    64. HTMLTableCellElement
    65. HTMLTableColElement
    66. HTMLTableDataCellElement
    67. HTMLTableElement
    68. HTMLTableHeaderCellElement
    69. HTMLTableRowElement
    70. HTMLTableSectionElement
    71. HTMLTemplateElement
    72. HTMLTextAreaElement
    73. HTMLTimeElement
    74. HTMLTitleElement
    75. HTMLTrackElement
    76. HTMLUListElement
    77. HTMLUnknownElement
    78. HTMLVideoElement
    79. HashChangeEvent
    80. History
    81. ImageData
    82. Location
    83. MessageChannel
    84. MessageEvent
    85. Navigator
    86. NavigatorGeolocation
    87. NavigatorID
    88. NavigatorLanguage
    89. NavigatorOnLine
    90. NavigatorPlugins
    91. PageTransitionEvent
    92. Plugin
    93. PluginArray
    94. PopStateEvent
    95. PortCollection
    96. PromiseRejectionEvent
    97. RadioNodeList
    98. Transferable
    99. ValidityState
    100. Window
    101. WindowBase64
    102. WindowEventHandlers
    103. WindowTimers