IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Lister les listeners d'un objet


Sujet :

JavaScript

  1. #1
    Membre habitué

    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 162
    Points : 179
    Points
    179
    Par défaut Lister les listeners d'un objet
    Bonjour

    Voilà j'aimerais savoir si il existe un moyen de lister les listeners d'un objet.


    addEventListener permet d'ajouter un listener.
    removeEventListener permet de supprimer un listener.

    Mais comment connaitre les listener en cours d'un objet ?

    Merci

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    il aurait était intéressant que tu précises le contexte dans lequel tu veux opérer, navigateur sur une page quelconque ou une de tes pages !

    Au niveau navigateur il te faut regarder du coté de getEventListeners


    Au niveau de ta page, tu n'as pas de moyens avec les méthodes actuelles de retrouver la liste des listeners en cours sauf si...tu utilises jQuery auquel cas il suffit d'utiliser une méthode « interne » et non documentée que l'on retrouve dans la source de la librairie, jQuery._data(element, type).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // For internal use only.
    _data: function( elem, name, data ) {
    	return internalData( elem, name, data, true );
    },
    Néanmoins tu peux toujours surcharger la méthode addEventListener pour mettre à jour une liste interne, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Element.prototype.originalAddEventListener = Element.prototype.addEventListener;
     
    Element.prototype.addEventListener = function (type, fct, capture) {
      // init
      this.eventListenerList = this.eventListenerList || {};
      this.eventListenerList[type] = this.eventListenerList[type] || [];
      capture = capture || false;
      // appel fonction original
      this.originalAddEventListener( type, fct, capture);
      // sauvegarde dans liste
      this.eventListenerList[type].push({
        listener: fct,
        useCapture: capture
      })
    };
    et pour la lecture un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Element.prototype.getEventListeners = function (type) { // peut être choisir un autre nom à la fonction
      this.eventListenerList = this.eventListenerList || {};
      return type in this.eventListenerList ? this.eventListenerList[type] : [];
    };
    mais bien sûr cela va dépendre de ce que tu souhaites en faire.

  3. #3
    Membre habitué

    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 162
    Points : 179
    Points
    179
    Par défaut
    Effectivement le contexte est sur une de mes pages.

    En l’occurrence je suis surpris qu'une telle fonction qui me semble finalement assez basique ne soit pas implantée directement en javascript.

    Et comme je n'utilise pas JQuery il ne me reste plus qu'a gérer une liste interne comme tu le suggère.

    Merci NoSmoking,

Discussions similaires

  1. Lister les méthodes d'un objet Class
    Par nikles007 dans le forum Langage
    Réponses: 2
    Dernier message: 01/09/2009, 11h22
  2. Lister les variables d'un objet
    Par Nauja dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/07/2009, 23h13
  3. Lister les méthodes d'un objet
    Par jaljal dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 19/01/2009, 17h12
  4. Lister les attributs d'un objet
    Par LordBob dans le forum Langage
    Réponses: 2
    Dernier message: 04/12/2008, 11h15
  5. Lister les propriétés d'un objet
    Par DWade dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/10/2006, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo