我有这个简单的脚本向下滚动页面
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/
答案 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()来重新启动滚动。
答案 1 :(得分:1)
您需要从用户捕获滚动事件。
如果您正在使用jquery(或者可能是提供类似功能的类似库),您可以使用.scroll()
来检测它。$('#target').scroll(function() {
clearInterval(scrolldelay);
});
否则,您需要自己捕获滚动事件。如果这是为了跨浏览器使用,事件命名方案将为标准浏览器“滚动”,并为IE提供“onscroll”。
此页面包含一些非常基本的示例http://help.dottoro.com/ljurkcpe.php