无限滚动到页面底部。

3

我一直在编写一个脚本,自动滚动到我的 Twitter 关注者[twitter.com/following] 列表的末尾。到目前为止,我只是用我新手级别的知识实现了这个功能:

var delay=2000       
setTimeout(function(){
    for(var i = 0; i<10; i++){   
    window.scrollTo(0,document.body.scrollHeight);
    }
},delay)

问题是当页面高度改变时,滚动条在向下滚动一次后停止滚动,并且不再滚动。有没有办法延迟循环它,以便重复执行滚动直到达到最后一个关注者。
或者,是否有一种方法可以通过不断跟踪和动态更新页面的高度来完成相同的操作。
2个回答

12

我认为你想使用setInterval而不是setTimeout

setInterval会反复触发,而不仅仅是一次。

以下代码适用于我:

setInterval(function() { window.scrollTo(0, document.body.scrollHeight); },
            2000);

1
如何在到达页面底部后停止它? - Ken
1
没错,clearInterval。应该在我提供的文档中详细描述。很高兴它对你有用。 - Drew Noakes
当我到达底部时,何时需要调用clearInterval()方法停止滚动? - kecman
@Ken,你应该将document.body.scrollHeight的先前值与当前值进行比较。如果它们相同,则表示元素底部没有加载新内容。 - Andrew K
是的,这个方法非常有效,并且可以无限地向下滚动。 - Muneeb Ahmad Khurram

1
如果您在滚动时没有请求延迟,则可以使用以下内容:
function scrollToBottom() {
  // onscroll is only called when scrollHeight changes
  // avoiding infinit loop
  window.onscroll = () => {
    window.scroll(0, window.scrollHeight);
  }

  window.scroll(0, window.scrollHeight);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接