Почему я не могу прокрутить окно браузера в цикле в консоли? - PullRequest
2 голосов
/ 16 мая 2019

Я хочу прокрутить окно браузера в цикле в консоли.Я хочу, чтобы каждый раз, когда прокручивался вниз (x) px вниз, я останавливался, делал что-то, а затем снова прокручивал (x) px, затем останавливался и т. Д., Пока страница не заканчивается (она очень длинная, я хочу проанализировать информацию).из этого).

Но когда я начал, я наткнулся на проблему, что функция прокрутки выполняется только один раз, после завершения цикла.

let i = 0;
scrollDownTillEnd = () => {
  for(i; i<100; i++) {
    window.scrollBy(0, 1000);
  };
scrollDownTillEnd();

(это упрощенный пример, но идея должна быть ясна)

Я помещаю код в консоль, находясь на странице, которую хочу прокрутить, и получаю затемзначение i в конце цикла и только одна прокрутка вниз.

Пожалуйста, объясните мне, почему этот кусок кода ведет себя так и как заставить его работать, как я упоминал ранее (в каждом цикле этонемного прокручиваю).

Спасибо!

1 Ответ

0 голосов
/ 16 мая 2019

Позвольте мне помочь решить несколько проблем, происходящих здесь.

1) У вас есть бесконечный цикл, потому что вы не проверяете, что i меньше 100, даже если вы увеличиваете его каждый раз. Вам нужно проверить это i < 100, чтобы цикл в конце концов закончился. В вашем цикле 0 всегда будет меньше 100, поэтому цикл никогда не закончится.

2) В вашем примере есть синтаксическая ошибка, потому что вы на самом деле не закрываете функцию scrollDownTillEnd фигурной скобкой перед вызовом самой функции.

3) Наконец, в качестве хорошей практики вам нужно каждый раз сбрасывать переменную i на 0, чтобы мы могли запускать этот фрагмент кода снова и снова. То, как вы настроили его в вашем примере, поскольку i будет равно 100 в конце первого запуска, после этого цикл больше не будет выполняться, пока вы не сбросите i в 0 снова. Самый простой способ сделать это - просто инициализировать i значением 0 при каждом выполнении этого цикла.

Попробуйте что-то вроде этого:

scrollDownTillEnd = () => {
    for(let i = 0; i < 100; i++) {
        window.scrollBy(0, 1000);
    };
};
scrollDownTillEnd();
...