我知道你可以在Chrome Inspector中看到事件监听器,但是我正在做一些调试工作,并且有很多事件监听器在我周围我想要禁用一些而不编辑代码
有没有办法从Webkit检查器快速禁用事件侦听器?
也许看看并在控制台中键入一些代码给removeEventListener
听众?我该怎么做?例如,我如何删除上面的“点击”听众
对不起,你运气不好(至少目前是这样。)removeEventListener
需要精确的侦听器Function对象作为参数,而DevTools不会让你以任何方式掌握侦听器功能。
如果您肯定需要此功能,请在http://new.crbug.com(针对Chrome)或http://bugs.webkit.org(针对WebKit,首选方式)提交错误。
您可以使用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))
您可以在javascript控制台中删除事件侦听器。首先找到附加此事件侦听器的元素。我们称之为e。然后你执行:e.onclick=null
。例如,许多事件监听器附加到“body”,然后上面的代码变为:document.body.onclick=null
。之后,事件监听器被删除。
只是:
getEventListeners(document).click[0].remove()
这也适用于其他元素:
getEventListeners($('#submit-button')[0]).click[0].remove()
和其他类型的事件:
getEventListeners($('#login-form')[0]).submit[0].remove()