浏览器触底判断(添加防抖)

简介: 浏览器触底判断(添加防抖)

废话不多说,直接上代码!
function moveToBrowserBottom() {
let timerForDebounce = null; //为了防抖添加的timer
window.onscroll = function() {

if (timerForDebounce) clearTimeout(timerForDebounce);
var scrollTop =
  document.documentElement.scrollTop ||
  window.pageYOffset ||
  document.body.scrollTop;
    // gap是为了计算偏差,有时候会有1px的偏差值
let gap =
  Math.ceil(document.documentElement.clientHeight + scrollTop) -
  document.documentElement.scrollHeight;  
if (
  document.documentElement.scrollHeight ===
    Math.ceil(document.documentElement.clientHeight + scrollTop) ||
  gap === 1
) {
  timerForDebounce = setTimeout(() => {
    console.log("触底了");
  }, 200);
}

};
}

复制代码
作者: Bill 本文地址: http://biaoblog.cn/info?id=1608281280000

版权声明: 本文为原创文章,版权归 biaoblog 个人博客 所有,欢迎分享本文,转载请保留出处,谢谢!

相关文章
|
7月前
|
JavaScript 前端开发 Go
怎样控制浏览器前进、后退、页面跳转?
怎样控制浏览器前进、后退、页面跳转?
75 0
|
1月前
|
Web App开发 移动开发 JavaScript
【Vue版】实现拖拽、排序效果(注意,这个方法在chrome谷歌浏览器上面不适用,dragend会情不自禁触发drag事件先执行,有点像浏览器的一个bug)
【Vue版】实现拖拽、排序效果(注意,这个方法在chrome谷歌浏览器上面不适用,dragend会情不自禁触发drag事件先执行,有点像浏览器的一个bug)
|
API
requestAnimationFrame实现浏览器动画
requestAnimationFrame实现浏览器动画
78 0
|
消息中间件 Web App开发 移动开发
浏览器原理 37 # 任务调度:有了setTimeOut,为什么还要使用 requestAnimationFrame?
浏览器原理 37 # 任务调度:有了setTimeOut,为什么还要使用 requestAnimationFrame?
198 0
浏览器原理 37 # 任务调度:有了setTimeOut,为什么还要使用 requestAnimationFrame?
|
JavaScript API
onbeforeunload事件之关闭浏览器之前的提示弹框
onbeforeunload事件之关闭浏览器之前的提示弹框
484 0
IE浏览器判断
IE浏览器判断
49 0
|
Web App开发 JavaScript 前端开发
JavaScript停止冒泡和阻止浏览器默认行为
JavaScript停止冒泡和阻止浏览器默认行为
82 0
|
JavaScript 前端开发 开发者
面试官:说说哪些浏览器事件不会冒泡
你知道哪些浏览器事件不会冒泡吗?
JS 调整浏览器窗口大小事件
JS 调整浏览器窗口大小事件
JS  调整浏览器窗口大小事件