Question

Je travaille sur un script greasemonkey pour Gmail dans lequel je dois copier le fichier "Boîte de réception". lien. L'utilisation de cloneNode fonctionne bien, mais je pense qu'un événement onclick y est associé au moment de l'exécution. Donc, ceci est une question en deux parties: 1. Y a-t-il un moyen de voir quels événements sont attachés à un nœud? 2. Existe-t-il un moyen de copier ces événements? La chose la plus proche que j'ai trouvée était jQuery, et je ne suis pas encore prête à y aller. Merci!

Était-ce utile?

La solution

  1. Non, sauf s'il est défini à l'aide de l'attribut onclick de l'élément.
  2. Pas fiable (vous pouvez copier l'attribut onclick , mais si cela continuera à fonctionner dépend de son utilisation et de ses fonctions).

Vous feriez mieux d'ajouter votre propre clic , puis de déclencher cet événement sur l'original ... ou de simuler le comportement d'une autre manière.

Autres conseils

Je pense que nous pouvons résoudre ce problème en utilisant cette théorie:

Nous avons NodeList dans JS, également appelé liveLists. Nous pouvons vérifier chaque fois que leur longueur change, ajoutez les événements communs souhaités au nouvel élément dans la liste (longueur-1).

Que dire ....

Voici l'exemple utilisant Nodelist pour ajouter des événements.

<body>
        <div id="one" class="clones" style="background:red;width:100px;height:100px"></div>
    </body>

    <script>

        //Selecor based live list [Advantage]
        var nodeList = document.getElementsByClassName('clones')

        //Common Function for nodelist
        nodeList.addEvents = function(){
            nodeList.item(nodeList.length-1).addEventListener('click',function(){
                    console.log(this.id);
            });
        }
        nodeList.addEvents();

        //Making Clone
        var _clone  =  document.getElementsByTagName('div')[0].cloneNode(true);

        //Changing Id
        _clone.id="two"

        document.body.appendChild(_clone);
        nodeList.addEvents();
    </script>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top