1. 9 通信
    1. 9.1 MessageEvent 接口

9 通信

以前,WebSocket 接口在此定义。现在,它在 WebSockets 中定义。 [WEBSOCKETS]

9.1 MessageEvent 接口

MessageEvent

所有当前引擎均支持。

Firefox3+Safari4+Chrome2+
Opera10.6+Edge79+
Edge(旧版)12+Internet Explorer9+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android11+

服务器发送事件跨文档消息传递通道消息传递广播通道WebSockets 中的消息使用 MessageEvent 接口来处理它们的 message 事件: [WEBSOCKETS]

[Exposed=(Window,Worker,AudioWorklet)]
interface MessageEvent : Event {
  constructor(DOMString type, optional MessageEventInit eventInitDict = {});

  readonly attribute any data;
  readonly attribute USVString origin;
  readonly attribute DOMString lastEventId;
  readonly attribute MessageEventSource? source;
  readonly attribute FrozenArray<MessagePort> ports;

  undefined initMessageEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional any data = null, optional USVString origin = "", optional DOMString lastEventId = "", optional MessageEventSource? source = null, optional sequence<MessagePort> ports = []);
};

dictionary MessageEventInit : EventInit {
  any data = null;
  USVString origin = "";
  DOMString lastEventId = "";
  MessageEventSource? source = null;
  sequence<MessagePort> ports = [];
};

typedef (WindowProxy or MessagePort or ServiceWorker) MessageEventSource;
event.data

MessageEvent/data

所有当前引擎均支持。

Firefox3+Safari4+Chrome2+
Opera12.1+Edge79+
Edge(旧版)12+Internet Explorer9+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

返回消息的数据。

event.origin

MessageEvent/origin

所有当前引擎均支持。

Firefox3+Safari4+Chrome2+
Opera12.1+Edge79+
Edge(旧版)12+Internet Explorer9+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

对于 服务器发送事件跨文档消息传递,返回消息的来源。

event.lastEventId

MessageEvent/lastEventId

所有当前引擎均支持。

Firefox3+Safari4+Chrome2+
Opera12.1+Edge79+
Edge(旧版)17+Internet Explorer9+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

对于 服务器发送事件,返回 最后一个事件 ID 字符串

event.source

MessageEvent/source

所有当前引擎均支持。

Firefox3+Safari4+Chrome2+
Opera12.1+Edge79+
Edge(旧版)12+Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

对于 跨文档消息传递,返回源窗口的 WindowProxy;在 SharedWorkerGlobalScope 对象触发的 connect 事件中,返回附加的 MessagePort

event.ports

MessageEvent/ports

所有当前引擎均支持。

Firefox3+Safari4+Chrome4+
Opera12.1+Edge79+
Edge(旧版)12+Internet Explorer9+
Firefox Android?Safari iOS?Chrome Android?WebView Android37+Samsung Internet?Opera Android12.1+

对于 跨文档消息传递通道消息传递,返回与消息一起发送的 MessagePort 数组。

data 属性必须返回其初始化的值。它表示正在发送的消息。

origin 属性必须返回其初始化的值。在 服务器发送事件跨文档消息传递 中,它表示发送消息的文档的 来源(通常是文档的方案、主机名和端口,但不包括其路径或 片段)。

lastEventId 属性必须返回其初始化的值。在 服务器发送事件 中,它表示事件源的 最后一个事件 ID 字符串

source 属性必须返回其初始化的值。在 跨文档消息传递 中,它表示消息来源的 Window 对象的 浏览上下文WindowProxy;在 共享工作线程 使用的 connect 事件中,它表示新连接的 MessagePort

ports 属性必须返回其初始化的值。在 跨文档消息传递通道消息传递 中,它表示正在发送的 MessagePort 数组。

initMessageEvent(type, bubbles, cancelable, data, origin, lastEventId, source, ports) 方法必须以类似于同名 initEvent() 方法的方式初始化事件。 [DOM]

各种 API(例如,WebSocketEventSource)在其 message 事件中使用 MessageEvent 接口,而无需使用 MessagePort API。