Pregunta

Estoy trabajando en un script de greasemonkey para gmail en el que necesito hacer una copia de la " Bandeja de entrada " enlazar. El uso de cloneNode funciona bien, pero creo que hay un evento onclick que se adjunta en el tiempo de ejecución. Entonces, esta es una pregunta de dos partes: 1. ¿Hay alguna manera de ver qué eventos se adjuntan a un nodo? 2. ¿Hay una manera de copiar esos eventos también? Lo más cercano que encontré fue jQuery, y todavía no estoy listo para ir allí. Gracias!

¿Fue útil?

Solución

  1. No, a menos que esté configurado con el atributo onclick en el elemento.
  2. No de forma confiable (puede copiar el atributo onclick , pero el hecho de que continúe funcionando depende de si se usó y de lo que hace).

Es mejor que agregue su propio controlador de clic , y luego active ese evento en el original ... O simule el comportamiento de alguna otra manera.

Otros consejos

Creo que podemos resolver esto usando esta teoría:

Tenemos NodeList en JS, también llamadas listas en vivo. Podemos verificar cada vez que cambie su longitud, agregar Evento los eventos comunes deseados al nuevo elemento en la lista en (longitud-1).

Que dicen ....

Aquí está el ejemplo que usa Nodelist para agregar eventos.

<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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top