自动向下滚动页面,直到用户向上滚动

dyn*_*mic 5 javascript

我有这个简单的脚本向下滚动页面

function scrollDown() {
     window.scrollBy(0,50); // horizontal and vertical scroll increments
}

scrolldelay = setTimeout('scrollDown()',100); // scrolls every 100 milliseconds
Run Code Online (Sandbox Code Playgroud)

现在我希望拦截用户向上滚动以停止使用a的setTimeout

clearTimeout(scrolldelay);
Run Code Online (Sandbox Code Playgroud)

任何的想法?优选纯js

接受答案的替代方法是:http://jsfiddle.net/Vy8tW/

Arn*_*anc 4

var start = (function() {
    function scrollTop() {
        return window.scrollTop || document.body.scrollTop || (document.documentElement && document.documentElement.scrollTop)
    }

    var top = scrollTop();
    var interval;
    window.onscroll = function() {
        var newtop = scrollTop();
        if (newtop < top) {
            clearInterval(interval);
        }
        top = newtop;
    };
    return function() {
        interval = setInterval(function() {
            window.scrollBy(0, 50);
        }, 100);
    }
}());

start();
Run Code Online (Sandbox Code Playgroud)

工作原理:每次滚动页面时,它都会将当前的scrollTop 与前一个scrollTop 进行比较。如果我们检测到页面已向上滚动,我们就会停止该间隔。

您可以通过再次调用 start() 来重新启动滚动。

在这里尝试一下: http: //jsfiddle.net/fR9Wt/3/