Очистите страницу бесконечной прокруткой - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь получить все продукты на сайте электронной коммерции, который использует бесконечную прокрутку для загрузки продуктов. Я нашел решение прокрутки вниз страницы, однако, похоже, чтоконечная точка, и она продолжает работать даже после того, как она достигает нижней части страницы, поэтому мне было интересно, как узнать, закончилась ли страница, чтобы я мог поставить условие и остановить функцию очистки интервала, любая помощь очень ценится.Я вставляю свое текущее решение, которое прокручивается до конца страницы, но никогда не останавливается после этого.

(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);
}())

1 Ответ

0 голосов
/ 13 апреля 2019

Выглядит так, как будто вы проверяете, прокрутила ли страница на самом деле, но никогда не отменяете 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 циклов без прокрутки перед выходом из интервала.

...