如何从滚动事件中断开所有处理程序?

时间:2017-08-03 21:03:11

标签: javascript javascript-events

我正在寻找一个包含30-40 JavaScript的巨型代码库,其中包括执行各种操作,包括挂钩事件。

我希望以编程方式断开scroll事件(窗口或文档)的任何处理程序。最好来自F12工具中的控制台选项卡。

可以在JavaScript中使用吗?

1 个答案:

答案 0 :(得分:1)

您可能已经发现不能使用removeEventListener,因为您需要知道哪个函数是要分离的事件处理程序。

但是您可以在addEventListener周围创建一个包装器,这样当它被调用时,您就不能将其转换为对真实addEventListener方法的调用。

您可以将此script元素放在head部分,之前包含这些库的任何script标记:

<script>
window.origAddEventListener = window.addEventListener;
window.addEventListener = function (type, f, options) {
    if (type === "scroll") return; // do not add the listener
    window.origAddEventListener(type, f, options);
};
</script>

您可以为document.addEventListener执行类似操作。

这样,阻止事件处理程序在scroll(或window)元素上为document事件注册。