如何在javascript中检测用户是否正在滚动?
发布于 2012-05-16 00:58:43
你刚刚在你的标签中写了javascript,所以@Wampie post可以帮助你。
我也想做出贡献,所以如果你需要的话,你可以在使用jQuery时使用以下内容。
//Firefox
$('#elem').bind('DOMMouseScroll', function(e){
if(e.detail > 0) {
//scroll down
console.log('Down');
}else {
//scroll up
console.log('Up');
}
//prevent page fom scrolling
return false;
});
//IE, Opera, Safari
$('#elem').bind('mousewheel', function(e){
if(e.wheelDelta< 0) {
//scroll down
console.log('Down');
}else {
//scroll up
console.log('Up');
}
//prevent page fom scrolling
return false;
});
另一个例子:
$(function(){
var _top = $(window).scrollTop();
var _direction;
$(window).scroll(function(){
var _cur_top = $(window).scrollTop();
if(_top < _cur_top)
{
_direction = 'down';
}
else
{
_direction = 'up';
}
_top = _cur_top;
console.log(_direction);
});
});
发布于 2018-09-20 05:36:18
window.addEventListener("scroll",function(){
window.lastScrollTime = new Date().getTime()
});
function is_scrolling() {
return window.lastScrollTime && new Date().getTime() < window.lastScrollTime + 500
}
将500更改为您认为用户“不再滚动”的最后一次滚动事件后的毫秒数。
(addEventListener
比onScroll
更好,因为前者可以与任何其他使用onScroll
的代码很好地共存。)
发布于 2019-11-28 18:21:32
使用间隔来检查
您可以设置一个时间间隔来持续检查用户是否已滚动,然后执行相应的操作。
借用his article中伟大的John Resig。
示例:
let didScroll = false;
window.onscroll = () => didScroll = true;
setInterval(() => {
if ( didScroll ) {
didScroll = false;
console.log('Someone scrolled me!')
}
}, 250);
https://stackoverflow.com/questions/10605197
复制相似问题