Как можно клонировать элементы и сохранить слушателей событий? - PullRequest
4 голосов
/ 02 апреля 2012

Я делаю расширение для Chrome, чтобы добавить шифрование javascript в Gmail для моих друзей и личного использования. У меня большая часть этого работает, за исключением того, что когда я пытаюсь клонировать кнопку уже в интерфейсе Gmail, выполнив $('#elmId').clone(true), она не клонирует прослушиватели событий. Также $('#elmId').data('events') ничего не дает. Я знаю, что кнопка имеет несколько прослушивателей событий, потому что когда я проверяю элемент, инструменты разработчика показывают, что на вкладке «Прослушиватели событий» есть щелчок, наведение мыши и т. Д. (См. http://i.stack.imgur.com/9KnIW.png & http://i.imgur.com/1sszQ.png). Это даже возможно? Я провел немало поисков и ничего не придумал. Есть идеи, как это сделать или вообще возможно?

1 Ответ

0 голосов
/ 03 апреля 2012

Даже если клонирование прослушивателя событий технически возможно, это не значит, что оно имеет смысл.Слушателем может быть замыкание, которое знает об элементе, использование того же замыкания на другом элементе не будет работать ... например,

x.onclick = function(){document.body.removeChild(x);}

, в этом случае обработчик onclick удаляет элементx, но если вы скопируете элемент и обработчик, щелкнув по копии, он все равно закроет оригинал.

...