Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不在浏览器中滚动时的jQuery事件侦听器?_Javascript_Jquery_Jquery Events - Fatal编程技术网

Javascript 不在浏览器中滚动时的jQuery事件侦听器?

Javascript 不在浏览器中滚动时的jQuery事件侦听器?,javascript,jquery,jquery-events,Javascript,Jquery,Jquery Events,我需要在浏览器未滚动时设置目标: 到目前为止,我有以下代码: var position = jQuery(window).scrollTop(); // how much is scolling // should start at 0 jQuery(window).scroll(function() { var scroll = jQuery(window).scrollTop(); if(scroll > position) { // scrolling do

我需要在浏览器未滚动时设置目标:

到目前为止,我有以下代码:

var position = jQuery(window).scrollTop(); // how much is scolling
// should start at 0    
jQuery(window).scroll(function() {
    var scroll = jQuery(window).scrollTop();

    if(scroll > position) { // scrolling down
        // do something when scrolling down
    } else if(scroll < position) { // scrolling up
        // do something when scrolling up
    }else { // idle???
        // do something when idle
    }
    position = scroll;    
});
var position=jQuery(窗口).scrollTop();//斯科林多少钱
//应该从0开始
jQuery(窗口).滚动(函数(){
var scroll=jQuery(window.scrollTop();
如果(滚动>位置){//向下滚动
//向下滚动时执行某些操作
}否则如果(滚动<位置){//向上滚动
//向上滚动时执行某些操作
}还有{//空闲???
//闲着做事
}
位置=滚动;
});

上下滚动效果很好,但我无法在根本没有滚动的情况下锁定目标。如何实现这一点?

使用变量跟踪滚动状态,使用计时器确定滚动是否已停止N秒

var scroll_active = false;
var scroll_timer = new Date();
启动滚动计时器:

check_scroll_time();
然后,在scroll上,在
scroll\u timer
变量中重新设置时间戳:

$(window).scroll(function(){
    scroll_timer = new Date();

    //Your existing code goes here; No-scroll events are handled in check_scroll_time()
    var scroll = jQuery(window).scrollTop();
    if(scroll > position) { // scrolling down
       // do something when scrolling down
    } else if(scroll < position) { // scrolling up
       // do something when scrolling up
    }

});
body{高度:700vh;}
#模糊{位置:固定;顶部:50px;宽度:100vw;文本对齐:中心;}
#msg{位置:固定;顶部:0;右侧:0;文本对齐:中间;填充:5px;背景:小麦;}


滚动-当用户停止滚动时,只需观察一次2秒的暂停
,还是重复?您的用例是什么?不滚动=默认行为,当用户滚动可能重复的
function check_scroll_time(){
  now = new Date();
  if ((now.getTime() - scroll_timer.getTime())/1000 > 2){
    //No scrolling - do something
  }else{
    //Scrolling is active - do nothing
  }
  setTimeout(function(){ check_scroll_time() },300); //<==== call ad-infinitum
}