I volontari di MDN non hanno ancora tradotto questo articolo in Italiano. Unisciti a noi e traducilo tu stesso.
Puoi anche consultare l’articolo in English (US).

EventTarget is an 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 on... properties and attributes.

Constructor

EventTarget()
Creates a new EventTarget object instance.

Methods

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

Additional methods for Mozilla chrome code

Mozilla extensions for use by JS-implemented event targets to implement on* 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
DOM
The definition of 'EventTarget' in that specification.
Living Standard No change.
Document Object Model (DOM) Level 3 Events Specification
The 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 Specification
The definition of 'EventTarget' in that specification.
Obsolete Initial definition.

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support1 Yes197

10.1

1 — 10.11

EventTarget() constructor64 ?59 No51 No
addEventListener13121

9

6 — 114 5

71
dispatchEvent4122

9

6 — 116 7

93.2
removeEventListener1121

9

6 — 118 9

71
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support118 Yes47

10.1

1 — 10.12

Yes
EventTarget() constructor6464 ?5951 No No
addEventListener13183 Yes471 Yes
dispatchEvent418 Yes4 Yes Yes Yes
removeEventListener118 Yes471 Yes

1. Window.EventTarget did not exist on versions of Safari before 10.1.

2. Window.EventTarget did not exist on versions of Safari iOS before 10.1.

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

4. Older versions of IE supported an equivalent, proprietary EventTarget.attachEvent() method.

5. Supported as attachEvent.

6. Older versions of IE supported an equivalent, proprietary EventTarget.fireEvent() method.

7. Supported as fireEvent.

8. Older versions of IE supported an equivalent, proprietary EventTarget.detachEvent() method.

9. Supported as detachEvent.

 

See Also

Tag del documento e collaboratori

Ultima modifica di: p0lar_bear,