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

时间:2011-09-06 10:03:28

标签: javascript

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

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

scrolldelay = setTimeout('scrollDown()',100); // scrolls every 100 milliseconds

现在我希望在用户向上滚动以使用

停止setTimeout时拦截
clearTimeout(scrolldelay);

有什么想法吗? 优先使用纯js

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

2 个答案:

答案 0 :(得分: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();

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

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

在此处试试:http://jsfiddle.net/fR9Wt/3/

答案 1 :(得分:1)

您需要从用户捕获滚动事件。

如果您正在使用jquery(或者可能是提供类似功能的类似库),您可以使用.scroll()

来检测它。
$('#target').scroll(function() {
    clearInterval(scrolldelay);
});

否则,您需要自己捕获滚动事件。如果这是为了跨浏览器使用,事件命名方案将为标准浏览器“滚动”,并为IE提供“onscroll”。

此页面包含一些非常基本的示例http://help.dottoro.com/ljurkcpe.php