window.onresize 触发多次

小哈
  • 214

window.onresize 触发多次

我的浏览器高度高了5像素,onresize 执行5次。页面抖动厉害,有没有办法,同一时间高度扩展5像素,只执行一次onresize

window.onresize = () => {

}
回复
阅读 3.3k
4 个回答

借助 函数防抖,可以引入 lodash

import _ from 'lodash'
window.onresize = _.debounce(function() {
    
}, 500)

意思就是,在页面窗口停止变化的500毫秒后,再执行回调函数。

节流了解一下
规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。
链接描述

用于页面滚动的 你改下试试

    //页面滚动 侧导航对应项高亮
    var timeout;
    var dom_arr = $(".item_box");
    $(window).scroll(function(){
        if (timeout){
            clearTimeout(timeout);
        }   
        timeout = setTimeout(function(){   
            nav_add_on(dom_arr)  
        },200);   
    })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏