Skip to content
Menu
编程侠
  • 首页
  • 资讯
    • 手机
  • 博客
    • 博客vue
    • 博客PHP
  • Q我
编程侠
2021-01-19

前端js防抖

防抖

如果短时间内大量触发同一事件,只会执行一次函数。

eg:监听浏览器滚动事件,返回当前滚条与顶部的距离。

function showTop  () {
    var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
  console.log('滚动条位置:' + scrollTop);
}
window.onscroll  = showTop

在运行的时候会发现存在一个问题:这个函数的默认执行频率太高了!我们不需要如此高频的反馈,接下来就该用防抖来优化这种场景。

此时我们可以在第一次触发事件时,不立即执行函数,而是在200ms之后执行。如果在200ms内没有再次触发滚动事件,那么就执行函数;如果在200ms内再次触发滚动事件,那么当前的计时取消,重新开始计时。

function debounce(fn,delay){
    let timer = null
    return function() {
        if(timer){
            clearTimeout(timer) 
        }
        timer = setTimeout(fn,delay)
    }
}
function showTop  () {
    var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
  console.log('滚动条位置:' + scrollTop);
}
window.onscroll = debounce(showTop,1000)

这样就实现了防抖。

最新

  • 831密码安全口令
  • 链接跳转到百度地图的指定地址
  • 云服务提到的99.99%的服务可用性,这是个什么概念?
  • 兼容IE的CSS竖排文字代码
  • 网页灰度

标签

831 a标签 canvas clone csrf echarts filter GB2312 grayscale Hello html2canvas iframe prism Unicode UTF-8 wordpress world XSS 不触发 云服务 代码雨 大数据 异常 手机号 打印 拼多多 数组 文字转语音 朗读 正则 深浅拷贝 热力图 竖排 签名验证 编码 编程圈 置灰 背代码 节流 速度 链接 链接跳转 键盘 防抖 验证

友情链接

  • staggering-beauty
  • 编程侠
©2025 编程侠 渝ICP备20006693号-4