Web/API/EventTarget

From Get docs

EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them.

Element, Document, and Window are the most common event targets, but other objects can be event targets, too. For example XMLHttpRequest, AudioNode, AudioContext, and others.

Many event targets (including elements, documents, and windows) also support setting event handlers via onevent properties and attributes.

Constructor

EventTarget()
Creates a new EventTarget object instance.

Methods

EventTarget.addEventListener()
Registers an event handler of a specific event type on the EventTarget.
EventTarget.removeEventListener()
Removes an event listener from the EventTarget.
EventTarget.dispatchEvent()
Dispatches an event to this EventTarget.

Additional methods in Mozilla chrome codebase

Mozilla includes a couple of extensions for use by JS-implemented event targets to implement onevent properties.

See also WebIDL bindings.

  • void setEventHandler(DOMString type, EventHandler handler) '
  • EventHandler getEventHandler(DOMString type) '

Example

Simple implementation of EventTarget

var EventTarget = function() {
  this.listeners = {};
};

EventTarget.prototype.listeners = null;
EventTarget.prototype.addEventListener = function(type, callback) {
  if (!(type in this.listeners)) {
    this.listeners[type] = [];
  }
  this.listeners[type].push(callback);
};

EventTarget.prototype.removeEventListener = function(type, callback) {
  if (!(type in this.listeners)) {
    return;
  }
  var stack = this.listeners[type];
  for (var i = 0, l = stack.length; i < l; i++) {
    if (stack[i] === callback){
      stack.splice(i, 1);
      return;
    }
  }
};

EventTarget.prototype.dispatchEvent = function(event) {
  if (!(event.type in this.listeners)) {
    return true;
  }
  var stack = this.listeners[event.type].slice();

  for (var i = 0, l = stack.length; i < l; i++) {
    stack[i].call(this, event);
  }
  return !event.defaultPrevented;
};

Specifications

Specification Status Comment
DOMThe definition of 'EventTarget' in that specification. Living Standard No change.
Document Object Model (DOM) Level 3 Events SpecificationThe definition of 'EventTarget' in that specification. Obsolete A few parameters are now optional (listener), or accepts the null value (useCapture).
Document Object Model (DOM) Level 2 Events SpecificationThe definition of 'EventTarget' in that specification. Obsolete Initial definition.

Browser compatibility

Update compatibility data on 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
EventTarget Chrome

Full support 1

Edge

Full support 12

Firefox

Full support 1

IE

Full support 6

Opera

Full support 7

Safari Full support 1

Notes'

Full support 1

Notes'

Notes' window.EventTarget did not exist on versions of Safari before 10.1.

WebView Android

Full support 1

Chrome Android

Full support 18

Firefox Android

Full support 4

Opera Android

Full support 10.1

Safari iOS Full support 1

Notes'

Full support 1

Notes'

Notes' window.EventTarget did not exist on versions of Safari iOS before 10.3.

Samsung Internet Android

Full support 1.0

EventTarget() constructor Chrome

Full support 64

Edge

Full support ≤79

Firefox

Full support 59

IE

No support No

Opera

Full support 51

Safari

Full support 14

WebView Android

Full support 64

Chrome Android

Full support 64

Firefox Android

Full support 59

Opera Android

Full support 47

Safari iOS

Full support 14

Samsung Internet Android

Full support 9.0

addEventListener

Chrome Full support 1

Notes'

Full support 1

Notes'

Notes' Before Chrome 49, the type and listener parameters were optional.

Edge

Full support 12

Firefox

Full support 1

IE Full support 9


Full support 9


No support 6 — 11

Notes' Alternate Name'

Notes' Older versions of IE supported an equivalent, proprietary EventTarget.attachEvent() method. Alternate Name' Uses the non-standard name: attachEvent

Opera

Full support 7

Safari

Full support 1

WebView Android Full support 1

Notes'

Full support 1

Notes'

Notes' Before Chrome 49, the type and listener parameters were optional.

Chrome Android Full support 18

Notes'

Full support 18

Notes'

Notes' Before Chrome 49, the type and listener parameters were optional.

Firefox Android

Full support 4

Opera Android

Full support 10.1

Safari iOS

Full support 1

Samsung Internet Android Full support 1.0

Notes'

Full support 1.0

Notes'

Notes' Before Samsung Internet 5.0, the type and listener parameters were optional.

dispatchEvent Chrome

Full support 4

Edge

Full support 12

Firefox

Full support 2

IE Full support 9


Full support 9


No support 6 — 11

Notes' Alternate Name'

Notes' Older versions of IE supported an equivalent, proprietary EventTarget.fireEvent() method. Alternate Name' Uses the non-standard name: fireEvent

Opera

Full support 9

Safari

Full support 3.2

WebView Android

Full support 4

Chrome Android

Full support 18

Firefox Android

Full support 4

Opera Android

Full support 10.1

Safari iOS

Full support 3

Samsung Internet Android

Full support 1.0

removeEventListener Chrome

Full support 1

Edge

Full support 12

Firefox

Full support 1

IE Full support 9


Full support 9


No support 6 — 11

Notes' Alternate Name'

Notes' Older versions of IE supported an equivalent, proprietary EventTarget.detachEvent() method. Alternate Name' Uses the non-standard name: detachEvent

Opera

Full support 7

Safari

Full support 1

WebView Android

Full support 1

Chrome Android

Full support 18

Firefox Android

Full support 4

Opera Android

Full support 10.1

Safari iOS

Full support 1

Samsung Internet Android

Full support 1.0

Legend

Full support  
Full support
No support  
No support
See implementation notes.'
See implementation notes.
Uses a non-standard name.'
Uses a non-standard name.


See also