0

我正在用 Youtube 做一个网页抓取项目。我需要通过 Javascript 自动滚动到底部。我在 Google Chrome 检查控制台终端中输入命令。

此链接: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 Inspector Console 中输入此命令。

谢谢!

4

1 回答 1

2

循环在继续运行之前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, 1000);

param_wait_time毫秒(千分之一秒)为单位。

于 2018-07-23T22:21:44.850 回答