--- title: EventTarget slug: Web/API/EventTarget tags: - API - Cible de l'événement - DOM - DOM Events - EventTarget - Interface - Événements DOM translation_of: Web/API/EventTarget browser-compat: api.EventTarget --- {{ApiRef("DOM Events")}} `EventTarget` est une interface DOM implémentée par des objets qui peuvent recevoir des événements et peuvent avoir des écouteurs pour eux. {{domxref ("Element")}}, {{domxref ("Document")}} et {{domxref ("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 {{domxref ("XMLHttpRequest")}}, {{domxref ("AudioNode")}}, {{domxref ("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](/fr/docs/Web/Guide/DOM/Events/Event_handlers) via les propriétés et attributs `onevent`. {{InheritanceDiagram}} ## Constructeur - {{domxref("EventTarget.EventTarget()", "EventTarget()")}} - : Crée une nouvelle instance d'objet `EventTarget`. ## Méthodes - {{domxref("EventTarget.addEventListener()", "EventTarget.addEventListener()")}} - : Enregistre un gestionnaire d'événements d'un type d'événement spécifique sur `EventTarget`. - {{domxref("EventTarget.removeEventListener()", "EventTarget.removeEventListener()")}} - : Supprime un écouteur d'événement de `EventTarget`. - {{domxref("EventTarget.dispatchEvent()", "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](/fr/docs/Mozilla/WebIDL_bindings). - `void setEventHandler(DOMString type, EventHandler handler)` {{non-standard_inline}} - `EventHandler getEventHandler(DOMString type)` {{non-standard_inline}} ## Exemple ### Implémentation simple d'EventTarget ```js 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 {{Specifications}} ## Compatiblité des navigateurs {{Compat}} ## Voir également - [Référence d'événement](/fr/docs/Web/Reference/Events) - les événements disponibles sur la plateforme. - [Guide du développeur d'événements](/fr/docs/Web/Guide/DOM/Events) - {{domxref("Event")}} interface