最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Autoscroll with JavaScript console in browser - Stack Overflow

programmeradmin2浏览0评论

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?

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.

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?

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.

Share Improve this question edited Oct 29, 2014 at 13:51 ROMANIA_engineer 56.7k30 gold badges208 silver badges205 bronze badges asked Oct 29, 2014 at 13:37 MutekingMuteking 1,5135 gold badges18 silver badges34 bronze badges 2
  • Have you actually called the function? It works for me as well – Markai Commented Oct 29, 2014 at 13:43
  • Ok, I was hitting enter before calling the method. – Muteking Commented Oct 29, 2014 at 13:53
Add a comment  | 

3 Answers 3

Reset to default 8

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"

You should try setInterval() instead of setTimeout(). Check this sample code for that.

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

Autoscroll Function with Stop and Click Event Listener in JavaScript

(function () {
var intervalObj = null;
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);
        console.log("scrolling down more");
    } else {
        console.log("reached bottom of page; stopping");
        clearInterval(intervalObj);
        document.body.removeEventListener("click", clickHandler);
    }
}

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

intervalObj = setInterval(scrollDown, 1000); })();

End

发布评论

评论列表(0)

  1. 暂无评论