EventTarget

EventTarget est une interface DOM implémentée par des objets qui peuvent recevoir des événements et peuvent avoir des écouteurs pour eux.

Element, Document et Window sont les cibles d'événements les plus fréquentes, mais d'autres objets peuvent également être des cibles d'événements. Par exemple XMLHttpRequest, AudioNode, AudioContext et autres.

De nombreuses cibles d'événements (y compris des éléments, des documents et des fenêtres) supporte également la définition de gestionnaires d'événements via les propriétés et attributs onevent.

Constructeur

EventTarget()
Crée une nouvelle instance d'objet EventTarget.

Méthodes

EventTarget.addEventListener()
Enregistre un gestionnaire d'événements d'un type d'événement spécifique sur EventTarget.
EventTarget.removeEventListener()
Supprime un écouteur d'événement de EventTarget.
EventTarget.dispatchEvent()
Envoie un événement à cet EventTarget.

Méthodes supplémentaires dans la base de code Chrome de Mozilla

Mozilla inclut quelques extensions à utiliser par les cibles d'événements implémentées par JS pour implémenter les propriétés onevent.

Voir aussi liaisons WebIDL.

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

Exemple

Implémentation simple d'EventTarget

const 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
  }
  const stack = this.listeners[type]
  for (let 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
  }
  const stack = this.listeners[event.type].slice()

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

Spécifications

Spécification Status Comment
DOM
La définition de 'EventTarget' dans cette spécification.
Standard évolutif Pas de changement.
Document Object Model (DOM) Level 3 Events Specification
La définition de 'EventTarget' dans cette spécification.
Obsolete Quelques paramètres sont désormais optionnels (listener), ou acceptent la valeur nulle (useCapture).
Document Object Model (DOM) Level 2 Events Specification
La définition de 'EventTarget' dans cette spécification.
Obsolete Définition initiale.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
EventTargetChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 6Opera Support complet 7Safari Support complet 1
Notes
Support complet 1
Notes
Notes window.EventTarget did not exist on versions of Safari before 10.1.
WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1
Notes
Support complet 1
Notes
Notes window.EventTarget did not exist on versions of Safari iOS before 10.3.
Samsung Internet Android Support complet 1.0
EventTarget() constructorChrome Support complet 64Edge Support complet ≤79Firefox Support complet 59IE Aucun support NonOpera Support complet 51Safari Aucun support NonWebView Android Support complet 64Chrome Android Support complet 64Firefox Android Support complet 59Opera Android Support complet 47Safari iOS Aucun support NonSamsung Internet Android Support complet 9.0
addEventListenerChrome Support complet 1
Notes
Support complet 1
Notes
Notes Before Chrome 49, the type and listener parameters were optional.
Edge Support complet 12Firefox Support complet 1IE Support complet 9
Support complet 9
Aucun support 6 — 11
Notes Autre nom
Notes Older versions of IE supported an equivalent, proprietary EventTarget.attachEvent() method.
Autre nom Cette fonctionnalité utilise le nom non-standard : attachEvent
Opera Support complet 7Safari Support complet 1WebView Android Support complet 1
Notes
Support complet 1
Notes
Notes Before Chrome 49, the type and listener parameters were optional.
Chrome Android Support complet 18
Notes
Support complet 18
Notes
Notes Before Chrome 49, the type and listener parameters were optional.
Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0
Notes
Support complet 1.0
Notes
Notes Before Samsung Internet 5.0, the type and listener parameters were optional.
dispatchEventChrome Support complet 4Edge Support complet 12Firefox Support complet 2IE Support complet 9
Support complet 9
Aucun support 6 — 11
Notes Autre nom
Notes Older versions of IE supported an equivalent, proprietary EventTarget.fireEvent() method.
Autre nom Cette fonctionnalité utilise le nom non-standard : fireEvent
Opera Support complet 9Safari Support complet 3.2WebView Android Support complet 4Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 3Samsung Internet Android Support complet 1.0
removeEventListenerChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 9
Support complet 9
Aucun support 6 — 11
Notes Autre nom
Notes Older versions of IE supported an equivalent, proprietary EventTarget.detachEvent() method.
Autre nom Cette fonctionnalité utilise le nom non-standard : detachEvent
Opera Support complet 7Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Cette fonctionnalité utilise un nom non-standard.
Cette fonctionnalité utilise un nom non-standard.

Voir également