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) Cette API n'a pas été standardisée.
  • EventHandler getEventHandler(DOMString type) Cette API n'a pas été standardisée.

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

BCD tables only load in the browser

Voir également