You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 23:04:53