Короткий рассказ:Javascript - Бесконечный цикл прокрутки
Я хочу разобрать сайт, который имеет бесконечный свиток на нем, я не хочу, чтобы реализовать бесконечный свиток. Поэтому я хочу создать сценарий, который автоматически прокручивает страницу из консоли браузера, ожидая появления данных, а затем повторяется до конца.
Длинная история:
Я пытаюсь прокрутить вниз бесконечный свиток с помощью Консоли JavaScript в своем браузере. Когда мы прокручиваем донизу, выполняется вызов Ajax и заполняем элемент <div>
, поэтому нам нужно дождаться, когда это произойдет, а затем возобновите наш процесс.
Моя основная проблема заключается в том, что все это делается слишком быстро, это не дождалось завершения ajax до возобновления процесса.
Чтобы иметь конкретный пример, когда я иду на AngelList странице заданий (необходимо войти в систему), и когда я кладу это в моем браузере консоли:
function sleep(µs) {
var end = performance.now() + µs/1000;
while (end > performance.now()) ; // do nothing
}
var loading = true;
$(window).load(function() {
loading = false;
}).ajaxStart(function() {
loading = true;
}).ajaxComplete(function() {
loading = false;
});
function waitAfterScroll() {
if(loading === true) {
console.log("Wait the Ajax to finish loading");
setTimeout(waitAfterScroll, 1000);
return;
}
console.log("Ajax DONE");
}
var X= 0;
while(X < 100){
sleep(1000000);
X = X + 10;
console.log(X);
window.scrollTo(0,document.body.scrollHeight);
waitAfterScroll();
}
Я получил этот результат:
10
Wait the Ajax to finish loading
20
Wait the Ajax to finish loading
30
Wait the Ajax to finish loading
40
Wait the Ajax to finish loading
50
Wait the Ajax to finish loading
60
Wait the Ajax to finish loading
70
Wait the Ajax to finish loading
80
Wait the Ajax to finish loading
90
Wait the Ajax to finish loading
100
Wait the Ajax to finish loading
Wait the Ajax to finish loading
Ajax DONE
То, что я хотел бы это:
10
Wait the Ajax to finish loading // one or multiple times.....
Ajax DONE
20
Wait the Ajax to finish loading // one or multiple times.....
Ajax DONE
30
Wait the Ajax to finish loading // one or multiple times.....
Ajax DONE
40
Wait the Ajax to finish loading // one or multiple times.....
Ajax DONE
50
Wait the Ajax to finish loading // one or multiple times.....
Ajax DONE
60
Wait the Ajax to finish loading // one or multiple times.....
Ajax DONE
70
Wait the Ajax to finish loading // one or multiple times.....
Ajax DONE
80
Wait the Ajax to finish loading // one or multiple times.....
Ajax DONE
90
Wait the Ajax to finish loading // one or multiple times.....
Ajax DONE
100
Wait the Ajax to finish loading // one or multiple times.....
Ajax DONE
Я надеюсь, что это понятно.
Другими словами, я хотел бы иметь возможность прокрутки вниз, остановить выполнение javascript или, по крайней мере, дождаться завершения загрузки ajax, а затем повторить.
Быстрый поиск в Google вызывает много примеров. Вот один http://phppot.com/jquery/load-data-dynamically-on-page-scroll-using-jquery-ajax-and-php/ – Darkrum
Возможный дубликат [плагина jquery с бесконечным прокруткой] (http: // stackoverflow.com/questions/5059526/infinite-scroll-jquery-plugin) –
Спасибо @AlexFilatov, но не совсем. Я хочу проанализировать веб-сайт с бесконечным прокруткой на нем, я не хочу реализовывать бесконечный прокрутки. Поэтому я хочу автоматически прокручивать страницу через скрипт. –