2013-09-02 2 views
1

(В Chrome) Существует ли простой способ определить, когда обработчик события (для щелчка) удаляется из элемента? Мой обработчик событий загадочно исчезает, но я не уверен, есть ли быстрый и простой способ либо приостановить, либо получить трассировку стека/исключение, когда это произойдет.Определите, почему обработчик события исчезает на элементе DOM.

+1

Мой ответ предполагает, что обработчик события удален, но ваш симптом также может произойти, если ваш элемент уничтожен; вы уверены, что этого не происходит? (Большие правонарушители _innerHTML_ на предка или узлы, которые перестраиваются, а не модифицируются) –

ответ

4

В вашей среде отладки запустите этот код и посмотрите на свой console.

(function() { 
    var ael = Node.prototype.addEventListener, 
     rel = Node.prototype.removeEventListener; 
    Node.prototype.addEventListener = function (a, b, c) { 
     console.log('Listener', 'added', this, a, b, c); 
     ael.apply(this, arguments); 
    }; 
    Node.prototype.removeEventListener = function (a, b, c) { 
     console.log('Listener', 'removed', this, a, b, c); 
     rel.apply(this, arguments); 
    }; 
}()); 

Если необходимо, чтобы увидеть более подробную информацию, вы также можете позвонить console.trace или дать ФУНКЦИИ имя, так что вы можете использовать .caller (arguments.callee амортизируется, следовательно, используя имя, чтобы получить ссылку на себя)

Смежные вопросы