11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je maitrise maintenant bien la gestion des évènements avec addEventListener.

Par contre je cherche en vain - y compris sur le site de Mozilla qui contient la doc officielle du javascript - comment on peux récupérer la liste des fonctions qui écoute un évènement précis sur un noeud.

Comment qu'on fait ?
Modifié par El Riiico (05 Jul 2007 - 12:58)
Bonjour,

A ma connaissance, on fait pas. Le DOM Level2 ne le prévoit pas en tout cas (logiquement ce serait au niveau de l'interface EventTarget, mais y'a pas).

Edit : après vérification, y'a pas dans le DOM level 3 non plus.
Modifié par Lanza (05 Jul 2007 - 14:07)
En effet il n'existe pas non plus de méthode "hasEventListener" contrairement au model événementiel tiré du DOM 2 en Actionscript 3.
Il faudrait leur proposer ça pour le DOM4... Java Sun le propose (via getXXXListener) pour tous les évènements de l'interface, c'est vrai que parfois ça peut être pratique.
Effectivement.

Du coup je viens d'aller voir comment traitaient le problème des bibliothèques comme Mootools, YUI ou jQuery.

Ils ont tous retenu la même solution : ils ont tous une classe qui étend le DOM standard, dans laquelle leur version personnalisée de addEventListener gère à chaque appel un récapitulatif de tous les noeuds et de tous les évènements qui sont ainsi écoutés.

Seul ennui, dès que l'on utilise pas leur outil, on perd du coup l'info.

À moins de retoucher directement le prototype des fonctions natives addEventListener et attacheEvent (je crois que c'est que fait la bibliothèque Prototype, c'est très déconseillé), je ne vois pas trop comment on peut régler le problème autrement...
Modifié par El Riiico (05 Jul 2007 - 18:01)
Salut,

Pour ma part, je trouve qu'il n'est pas forcément si mal que ça de ne pas avoir accès à tous les gestionnaires d'événement. On a déjà assez de problèmes d'interaction entre les scripts en JavaScript. Smiley cligne