为什么我不能使用off()删除事件侦听器?

时间:2019-12-28 17:07:23

标签: javascript jquery dom google-chrome-devtools

我正在尝试从DOM中动态删除一个事件。为此,我使用的是Chrome(第79版)开发工具,第https://www.omgubuntu.co.uk/category/news?utm_source=menu

在“元素”选项卡中,转到“事件侦听器”,并查找“ load”事件,然后在“窗口”元素上找到3个事件。因此,在控制台中,我输入:

$(window).off('load');

该命令执行没有错误,但是即使我按了事件部分中的刷新按钮,似乎也没有任何更改。我希望Window的所有“加载”事件都会消失。

enter image description here

我在许多其他站点上都遇到了同样的问题,但是在我的本地网页上运行正常(这就是我知道我以正确的方式使用JQuery的方式)...

2 个答案:

答案 0 :(得分:1)

.off()仅删除通过.on()方法添加的事件,因此与其他API添加的任何事件均不会受到影响。

现在,当您说*时,即使我按事件部分中的刷新按钮。我希望Window的所有“加载”事件都消失。*您误解了页面处理方式的本质。如果刷新页面,将再次处理其所有代码,因此,即使您成功删除了控制台中的处理程序,它们也会全部回来,因为页面重新开始。

了解您在控制台中所做的操作只会影响浏览器中加载的页面的当前实例。

答案 1 :(得分:0)

要删除现有的侦听器,请使用getEventListeners命令行API:

getEventListeners(window).load.forEach(x=>window.removeEventListener('load',x.listener))

或只需单击“元素Remove”面板中的Event listeners按钮:

enter image description here