Bun*_*gle 27 javascript events event-handling addeventlistener dom-events
很抱歉,如果这是一个常见问题,但我找不到任何通过搜索看似相关的答案.
如果我附加一个这样的事件监听器:
window.addEventListener('scroll', function() { check_pos(box); }, false);
Run Code Online (Sandbox Code Playgroud)
以后尝试删除它似乎不起作用,如下所示:
window.removeEventListener('scroll', function() { check_pos(box); }, false);
Run Code Online (Sandbox Code Playgroud)
我假设这是因为addEventListener和removeEventListener方法需要引用相同的函数,而我已经为它们提供了匿名函数,虽然它们在代码中相同但并不完全相同.
如何更改代码以使调用removeEventListener工作?"box"参数指的<iframe>是我在屏幕上跟踪的名称; 也就是说,我希望能够scroll为每个事件订阅一次事件<iframe>(数量变化),一旦check_pos()函数测量某个位置,它将调用另一个函数并删除事件监听器以释放系统资源.
我的预感是解决方案将涉及一个闭包和/或命名匿名函数,但我不确定它看起来是什么样的,并且会欣赏一个具体的例子.
希望有道理.谢谢你的帮助!
Viv*_*ath 19
您是否尝试过维护对匿名函数的引用(如您所建议的那样)?
所以:
var listener = function() {
check_pos(box);
};
window.addEventListener('scroll', listener, false);
...
window.removeEventListener('scroll', listener, false);
Run Code Online (Sandbox Code Playgroud)