javascript:检测滚动结束

IT技术 javascript jquery html scrollbar scroll
2021-02-03 15:36:23

我有一个div与层overflow设置为scroll

当滚动到 底部时div,我想运行一个函数。


6个回答

接受的答案从根本上是有缺陷的,它已被删除。正确答案是:

function scrolled(e) {
  if (myDiv.offsetHeight + myDiv.scrollTop >= myDiv.scrollHeight) {
    scrolledToBottom(e);
  }
}

在 Firefox、Chrome 和 Opera 中对此进行了测试。有用。

@Alexwindow.location.href = 'http://newurl.com';window.open('http://newurl.com');+ 上面的代码。
2021-04-01 15:36:23
提示是你不能让它工作是使用这个 CSS: html, body: { height:100% }
2021-04-07 15:36:23
你能告诉我们为什么它有缺陷吗?
2021-04-10 15:36:23
你能建议我如何检查 div 中的水平滚动条吗?
2021-04-11 15:36:23
因为它根本不检测滚动结束,所以它会检测页面的向上滚动部分和包含 div 的高度何时相同!假设您要滚动的内容是 div 高度的两倍,一旦到达最后,scrollTop 值的大小将是容器 offsetHeight 的两倍。接受的答案会检查它们是否相等,并且不会检测到结尾。我的解决方案检查 scrollTop + 容器的高度是否等于(或大于,它发生)整个可滚动区域,现在是底部!
2021-04-13 15:36:23

我无法得到上述任何一个答案,所以这里有第三个对我有用的选项!(这与 jQuery 一起使用)

if (($(window).innerHeight() + $(window).scrollTop()) >= $("body").height()) {
    //do stuff
}

希望这可以帮助任何人!

好的,这是一个很好且正确的解决方案

你有一个 Div 调用 id="myDiv"

所以功能就行了。

function GetScrollerEndPoint()
{
   var scrollHeight = $("#myDiv").prop('scrollHeight');
   var divHeight = $("#myDiv").height();
   var scrollerEndPoint = scrollHeight - divHeight;

   var divScrollerTop =  $("#myDiv").scrollTop();
   if(divScrollerTop === scrollerEndPoint)
   {
       //Your Code 
       //The Div scroller has reached the bottom
   }
}
为我工作,在 Chrome 中使用表格进行测试
2021-03-21 15:36:23
谢谢!这对 Firefox 和 Chrome 都适用:D
2021-03-31 15:36:23
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight)
{
//your code here
}

我也搜索了它,甚至在检查了这里的所有评论之后,这是检查是否到达底部的解决方案。

这对我有用:

$(window).scroll(function() {
  buffer = 40 // # of pixels from bottom of scroll to fire your function. Can be 0
  if ($(".myDiv").prop('scrollHeight') - $(".myDiv").scrollTop() <= $(".myDiv").height() + buffer )   {
    doThing();
  }
});

必须使用 jQuery 1.6 或更高版本