简体   繁体   English

在浏览器中使用JavaScript控制台自动滚动

[英]Autoscroll with JavaScript console in browser

I know the scrollBy functions but is it possible to scroll down a web page with a command typed in the JavaScript console, so that the page automatically scrolls with the passed parameters? 我知道scrollBy函数,但是是否可以使用在JavaScript控制台中键入的命令向下滚动网页,以便该页面使用传递的参数自动滚动?

Typing the function 键入功能

function pageScroll() {
    window.scrollBy(0,50); // horizontal and vertical scroll increments
    scrolldelay = setTimeout('pageScroll()',100); // scrolls every 100 milliseconds
}

and then calling it does nothing in Chrome. 然后在Chrome中调用它不会执行任何操作。

Give this a try; 试试看; I use it myself often. 我经常自己使用它。

(function() {
    var intervalObj = null;
    var retry = 0;
    var clickHandler = function() { 
        console.log("Clicked; stopping autoscroll");
        clearInterval(intervalObj);
        document.body.removeEventListener("click", clickHandler);
    }
    function scrollDown() { 
        var scrollHeight = document.body.scrollHeight,
            scrollTop = document.body.scrollTop,
            innerHeight = window.innerHeight,
            difference = (scrollHeight - scrollTop) - innerHeight

        if (difference > 0) { 
            window.scrollBy(0, difference);
            if (retry > 0) { 
                retry = 0;
            }
            console.log("scrolling down more");
        } else {
            if (retry >= 3) {
                console.log("reached bottom of page; stopping");
                clearInterval(intervalObj);
                document.body.removeEventListener("click", clickHandler);
            } else {
                console.log("[apparenty] hit bottom of page; retrying: " + (retry + 1));
                retry++;
            }
        }
    }

    document.body.addEventListener("click", clickHandler);

    intervalObj = setInterval(scrollDown, 1000);

})()

It might show you an error "too much recursion" 它可能会向您显示错误"too much recursion"

You should try setInterval() instead of setTimeout() . 您应该尝试使用setInterval()而不是setTimeout() Check this sample code for that. 检查此示例代码。

    setInterval(function(){
      window.scrollBy(0,50);
    },100);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM