Domanda

Sto lavorando a uno script greasemonkey per gmail dove devo fare una copia della "Posta in arrivo" collegamento. L'uso di cloneNode funziona bene, ma penso che ci sia un evento onclick che viene collegato ad esso in fase di esecuzione. Quindi, questa è una domanda in due parti: 1. C'è un modo per vedere quali eventi sono collegati a un nodo? 2. Esiste un modo per copiare anche quegli eventi? La cosa più vicina che ho trovato era jQuery e non sono ancora pronto per andarci. Grazie!

È stato utile?

Soluzione

  1. A meno che non sia impostato utilizzando l'attributo onclick sull'elemento.
  2. Non in modo affidabile (puoi copiare l'attributo onclick , ma se continuerà a funzionare dipende dal fatto che sia stato utilizzato e da cosa lo fa).

Stai meglio aggiungendo il tuo gestore click , e quindi attivando quell'evento sull'originale ... O simulando il comportamento in qualche altro modo.

Altri suggerimenti

Penso che possiamo risolvere queste cose usando questa teoria:

Abbiamo NodeList in JS, chiamato anche liveLists. Possiamo verificare ogni volta che la loro lunghezza cambia, aggiungere Evitare gli eventi comuni desiderati al nuovo elemento nell'elenco (lunghezza-1).

Che dire ....

Ecco l'esempio usando Nodelist per aggiungere eventi.

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top