使用Chrome的webkit检查器删除事件侦听器

时间:2012-06-13 11:29:58

标签: javascript google-chrome webkit inspector

我知道你可以在Chrome Inspector中看到事件监听器,但我正在做一些调试工作,并且有很多事件监听器在我周围,我想在没有编辑代码的情况下禁用一些

enter image description here

有没有办法从Webkit检查器快速禁用事件侦听器?

也许看看并在控制台中输入一些代码removeEventListener听众?我该怎么做?例如,我如何删除上面的“点击”听众

5 个答案:

答案 0 :(得分:11)

您可以使用getEventListeners(element).click[index].listener来获取对侦听器的引用(在WebKit控制台中)。

因此,要删除第一个侦听器,您可以执行以下操作:

document.removeEventListener('click', getEventListeners(document).click[0].listener)

同样,要删除所有侦听器,您可以使用此功能:

function removeEventListeners(element, listenerMap) {
    Object.keys(listenerMap).forEach(function (name) {
        var listeners = listenerMap[name];
        listeners.forEach(function (object) {
            element.removeEventListener(name, object.listener);
        });
    });
}

removeEventListeners(document, getEventListeners(document))

答案 1 :(得分:4)

抱歉,你运气不好(至少目前是这样。)removeEventListener需要精确的侦听器Function对象作为参数,而DevTools不会让你以任何方式掌握侦听器功能

如果您确实需要此功能,请在http://new.crbug.com(针对Chrome)或http://bugs.webkit.org(针对WebKit,首选方式)提交错误。

答案 2 :(得分:3)

您可以在javascript控制台中删除事件侦听器。 首先找到附加此事件侦听器的元素。我们称之为e。然后你执行: e.onclick=null。 例如,许多事件监听器附加到" body",然后上面的代码变为: document.body.onclick=null。 之后,事件监听器被删除。

答案 3 :(得分:1)

简单地:

getEventListeners(document).click[0].remove()

这也适用于其他元素:

getEventListeners($('#submit-button')[0]).click[0].remove()

以及其他类型的活动:

getEventListeners($('#login-form')[0]).submit[0].remove()

答案 4 :(得分:0)

也许迟到了。

在chrome中,有一个特定的按钮可以删除特定事件的方法调用。

右键单击html输入(在我的示例中为boutton),检查元素,chrome打开“元素查看器”选项卡(以html模式),该面板中包含子选项卡的另一个面板单击“事件侦听器”选项卡并展开事件您对此感兴趣(在我的示例中为onclick),将鼠标指针悬停在您所检查的按钮的名称上,然后会出现一个按钮“ remove”,并且单击该事件监听器会被删除,用于当前加载的页面。

Et voilà