如何在JavaScript中监听窗口resize事件并调用函数?
解决窗口 resize 事件绑定问题
你遇到的问题是因为代码里的window.onresize = doSmt()直接执行了doSmt函数,把函数的返回值(这里是undefined)赋值给了onresize属性,导致窗口 resize 时不会触发目标函数。
正确的写法有两种:
方法一:直接赋值函数引用
不要加括号,把函数本身赋值给onresize:
window.onresize = doSmt;
方法二:使用 addEventListener(推荐)
这种方式支持给同一个事件绑定多个处理函数,更灵活:
window.addEventListener('resize', doSmt);
如果后续需要移除这个事件监听,可以用:
window.removeEventListener('resize', doSmt);
额外优化:防抖处理
窗口 resize 事件会在拖动过程中频繁触发,可能影响性能,你可以给函数加防抖逻辑,减少触发次数:
function debounce(func, delay = 200) { let timer; return function() { clearTimeout(timer); timer = setTimeout(() => func.apply(this, arguments), delay); }; } // 绑定防抖后的函数 window.addEventListener('resize', debounce(doSmt));
内容的提问来源于stack exchange,提问作者Ji Lin
相关产品推荐
相关产品推荐

