用无限滚动刮一页

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用无限滚动刮一页相关的知识,希望对你有一定的参考价值。

我试图在电子商务网站上获取所有产品,使用无限滚动来加载产品,我找到了一个滚动到页面底部的解决方案,但是,它似乎没有端点,并且它甚至在它到达页面底部后仍然继续,所以我想知道如何知道页面是否已经结束所以我可以设置一个条件并停止清除间隔的功能,非常感谢任何帮助。我正在粘贴我当前的解决方案,该解决方案向下滚动到页面的末尾,但之后永远不会停止。

(function() {
    var lastScrollHeight = 0, count = 0;
    function autoScroll() {
      count++;
      console.log(count);
      var sh = document.documentElement.scrollHeight;
      if (sh !== lastScrollHeight) {
        console.log(sh, lastScrollHeight);
        lastScrollHeight = sh;
        document.documentElement.scrollTop = sh;
      }
    }
    var myInterval = window.setInterval(autoScroll, 100);
}())
答案

看起来好像你正在检查页面是否实际滚动,但永远不会取消window.setInterval()

这样的事情应该有效:(未经测试)

(function() {
    var lastScrollHeight = 0, count = 0, myInterval = null, failCount = 0;
    function autoScroll() {
      count++;
      console.log(count);
      var sh = document.documentElement.scrollHeight;
      if (sh !== lastScrollHeight) {
        console.log(sh, lastScrollHeight);
        lastScrollHeight = sh;
        document.documentElement.scrollTop = sh;
        failCount = 0; // reset the number of failures
      }
      else {
        failCount++; // record that we failed
        if(failCount >= 10) // if we have failed 10 times in a row then exit
          window.clearInterval(myInterval);
      }
    }
    myInterval = window.setInterval(autoScroll, 100);
}())

编辑:更新以允许在退出间隔之前没有滚动的10个循环。

以上是关于用无限滚动刮一页的主要内容,如果未能解决你的问题,请参考以下文章

无限滚动在向下滚动到下一页时出现模板错误

django 的无限滚动在向下滚动时不加载下一页

如何实现无限滚动列表视图

iOS UICollectionView无限轮播

iOS UICollectionView无限轮播

用 Selenium 刮一张桌子并打印它