MessageEvent: MessageEvent() constructor

The MessageEvent() constructor creates a new MessageEvent object.


new MessageEvent(type)
new MessageEvent(type, options)



A string with the name of the event. It is case-sensitive and browsers always set it to message.

options Optional

An object that, in addition of the properties defined in Event(), can have the following properties:

data Optional

The data you want contained in the MessageEvent. This can be of any data type, and will default to null if not specified.

origin Optional

A string representing the origin of the message emitter. This defaults to an empty string ('') if not specified.

lastEventId Optional

A string representing a unique ID for the event. This defaults to an empty string ("") if not specified.

source Optional

A MessageEventSource (which can be a Window, a MessagePort, or a ServiceWorker object) representing the message emitter. This defaults to null if not set.

ports Optional

An array of MessagePort objects representing the ports associated with the channel the message is being sent through where appropriate (E.g. in channel messaging or when sending a message to a shared worker). This defaults to an empty array ([]) if not specified.

Return value

A new MessageEvent object.


const myMessage = new MessageEvent("message", {
  data: "hello",


HTML Standard
# the-messageevent-interface:dom-event-constructor

Browser compatibility

BCD tables only load in the browser

See also

  • ExtendableMessageEvent — similar to this interface but used in interfaces that needs to give more flexibility to authors.