我正在与Youtube一起进行Web搜刮项目。我需要通过Javascript自动滚动到底部。我在Google Chrome Inspect控制台终端中输入命令。
此链接:https://stackoverflow.com/a/29971996/3326078指导我使用此链接:
window.scrollTo(0, document.body.scrollHeight ||document.documentElement.scrollHeight);
上述工作正常。
但是,当我这样做时,
for (var i = 0; i < 5; i++) {
setTimeout(window.scrollTo(0, document.body.scrollHeight
|| document.documentElement.scrollHeight),5)}
它不会重复多次。有人可以向我解释我试图做的事是否可能。同样,我要在Google Chrome浏览器检查器控制台中输入此命令。
谢谢!
答案 0 :(得分:1)
for
循环在继续运行之前不会等待setTimeout
完成。如果要让滚动等待setTimeout
完成并运行一定的次数,则需要一个函数来调用超时,并在其中再次调用该函数。
许多方法可以做到这一点,但这是我的实现方式:
var scrollToBottomWithTimeout = function (param_iterations, param_wait_time) {
setTimeout(function () {
window.scrollTo(0, document.body.scrollHeight || document.documentElement.scrollHeight);
if (param_iterations > 0) {
param_iterations = param_iterations - 1;
scrollToBottomWithTimeout(param_iterations, param_wait_time);
}
}, param_wait_time);
};
声明后,可以像下面这样调用该函数:
scrollToBottomWithTimeout(5, 5);