Javascript 确定事件处理程序在DOM元素上消失的原因

Javascript 确定事件处理程序在DOM元素上消失的原因,javascript,jquery,google-chrome,events,Javascript,Jquery,Google Chrome,Events,(在Chrome中)是否有一种简单的方法来确定何时从元素中删除事件处理程序(用于单击)?我的一个事件处理程序正在神秘地消失,但我不确定是否有一种快速简便的方法来暂停或获取堆栈跟踪/异常。在调试环境中,运行此代码并查看控制台 (function () { var ael = Node.prototype.addEventListener, rel = Node.prototype.removeEventListener; Node.prototype.addEven

(在Chrome中)是否有一种简单的方法来确定何时从元素中删除事件处理程序(用于单击)?我的一个事件处理程序正在神秘地消失,但我不确定是否有一种快速简便的方法来暂停或获取堆栈跟踪/异常。

在调试环境中,运行此代码并查看
控制台

(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);
    };
}());

如果需要查看更多信息,您可能还需要调用
控制台。trace
或为函数指定一个名称,以便您可以使用(
参数。被调用方
被折旧,因此使用名称来获取对self的引用)

我的回答假设事件处理程序已删除,但是如果你的元素被破坏,你的症状也可能发生;你确定这不会发生吗?(大违规者是正在重建而不是修改的祖先或节点上的innerHTML)