18

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

在此处输入图像描述

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

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

4

5 回答 5

16

您可以使用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))
于 2015-08-24T21:24:03.843 回答
4

抱歉,您不走运(至少暂时如此。)removeEventListener需要确切的侦听器函数对象作为参数,而 DevTools 不会让您以任何方式掌握侦听器函数。

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

于 2012-06-15T12:24:49.053 回答
3

您可以在 javascript 控制台中删除事件侦听器。首先找到此事件侦听器附加到的元素。让我们称之为e。然后你执行: e.onclick=null. 比如很多事件监听器都附加在“body”上,那么上面的代码就变成了: document.body.onclick=null。之后,事件侦听器被删除。

于 2014-06-06T09:14:56.713 回答
2

也许晚了,但是。

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

右键单击 html 输入(在我的示例中为按钮)检查元素,chrome 打开元素查看器选项卡(在 html 模式下),另一个面板由该面板中的子选项卡组成,单击“事件侦听器”选项卡并展开您正在处理的事件有兴趣(在我的示例中为 onclick)将鼠标指向您检查的按钮的名称,然后会出现一个“删除”按钮,单击事件侦听器会为当前加载的页面删除。

等等瞧

于 2019-03-20T08:33:09.473 回答
1

简单地:

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

这也适用于其他元素:

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

和其他类型的事件:

getEventListeners($('#login-form')[0]).submit[0].remove()
于 2015-10-31T05:30:01.983 回答