Pergunta

Estou trabalhando em um script Greasemonkey para o Gmail, onde preciso fazer uma cópia do link "Caixa de entrada". O uso do CLONENODE funciona bem, mas acho que há um evento OnClick que se apega a ele em tempo de execução. Então, esta é uma pergunta de duas partes: 1. Existe uma maneira de ver quais eventos são anexados a um nó? 2. Existe uma maneira de copiar esses eventos também? A coisa mais próxima que encontrei foi o jQuery, e ainda não estou pronto para ir para lá. Obrigado!

Foi útil?

Solução

  1. Não a menos que seja definido usando o onclick atributo no elemento.
  2. Não de maneira confiável (você pode copiar o onclick atributo, mas se isso continuará a funcionar depende se fosse usado e o que faz).

É melhor adicionar o seu próprio click manipulador, e depois acionando esse evento no original ... ou simulando o comportamento de alguma outra maneira.

Outras dicas

Acho que podemos resolver essas coisas usando essa teoria:

Temos o NodElist em JS, também chamado de Livelistas. Podemos verificar sempre que seu comprimento mudar, addevent os eventos comuns desejados para o novo elemento na lista em (comprimento-1).

O quê dizer....

Aqui está o exemplo usando o NodEList para adicionar 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top