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.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget" target="_top"><rect x="1" y="1" width="110" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="56" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">EventTarget</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Constructor
EventTarget()- Creates a new
EventTargetobject 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
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 Full support 1 Notes' |
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 Full support 1 Notes' |
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 Full support 1 Notes' Before Chrome 49, the |
Edge
Full support 12 |
Firefox
Full support 1 |
IE Full support 9 Full support 9 No support 6 — 11 Notes' Older versions of IE supported an equivalent, proprietary |
Opera
Full support 7 |
Safari
Full support 1 |
WebView Android Full support 1 Full support 1 Notes' Before Chrome 49, the |
Chrome Android Full support 18 Full support 18 Notes' Before Chrome 49, the |
Firefox Android
Full support 4 |
Opera Android
Full support 10.1 |
Safari iOS
Full support 1 |
Samsung Internet Android Full support 1.0 Full support 1.0 Notes' Before Samsung Internet 5.0, the |
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' Older versions of IE supported an equivalent, proprietary |
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' Older versions of IE supported an equivalent, proprietary |
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
- Event reference - the events available in the platform.
- Event developer guide
Eventinterface
EventTarget by Mozilla Contributors is licensed under CC-BY-SA 2.5.