javascript:检测滚动结束

Zeb*_*bra 59 html javascript jquery scroll scrollbar

我有一个设置为的div图层.overflowscroll

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


Bjo*_*orn 95

接受的答案存在根本缺陷,因此已被删除.正确答案是:

function scrolled(e) {
  if (myDiv.offsetHeight + myDiv.scrollTop >= myDiv.scrollHeight) {
    scrolledToBottom(e);
  }
}
Run Code Online (Sandbox Code Playgroud)

在Firefox,Chrome和Opera中进行了测试.有用.

  • 因为它根本检测不到滚动结束,所以它会检测页面部分向上滚动和包含div的高度何时相同!假设您有两倍的内容滚动,而不是div的高度,一旦到达最后,scrollTop值将是容器的offsetHeight的两倍.接受的答案会检查它们是否相等,并且不会检测到结束.我的解决方案检查scrollTop +容器的高度是否等于(或大于,它发生)整个可滚动区域,现在这是底部! (5认同)
  • @ Alex`window.location.href ='http://newurl.com';`或`window.open('http://newurl.com');`+上面的代码. (5认同)

小智 9

if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight)
{
//your code here
}
Run Code Online (Sandbox Code Playgroud)

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


jus*_*ser 6

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

if (($(window).innerHeight() + $(window).scrollTop()) >= $("body").height()) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

希望这有助于任何人!


max*_*pan 6

好这里有一个好的和正确的解决方案

你有一个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
   }
}
Run Code Online (Sandbox Code Playgroud)