Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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会自动滚动到顶部_Javascript_Jquery_Scroll - Fatal编程技术网

除非用户开始滚动,否则javascript会自动滚动到顶部

除非用户开始滚动,否则javascript会自动滚动到顶部,javascript,jquery,scroll,Javascript,Jquery,Scroll,我想自动滚动到顶部,但如果用户开始滚动,我会退出 我目前拥有的东西过早地停止了动画,因为滚动动画本身就是滚动的——因此它触发了“如果发生滚动,停止滚动”动作 有没有办法确定滚动是由人还是js触发的?有更好的方法吗?为什么不简单地听一下鼠标滚轮事件呢。如果它被触发,用户试图自己滚动。此外,如果用户单击某个位置以停止滚动,您还可以侦听单击事件…希望这会有所帮助 它侦听鼠标滚轮事件+可用于在页面上滚动的键(页面上/下、空格键、箭头键等): 如果您注意到“您的”滚动条处于活动状态,请像上面那样停止: i

我想自动滚动到顶部,但如果用户开始滚动,我会退出

我目前拥有的东西过早地停止了动画,因为滚动动画本身就是滚动的——因此它触发了“如果发生滚动,停止滚动”动作


有没有办法确定滚动是由人还是js触发的?有更好的方法吗?

为什么不简单地听一下鼠标滚轮事件呢。如果它被触发,用户试图自己滚动。此外,如果用户单击某个位置以停止滚动,您还可以侦听单击事件…

希望这会有所帮助

它侦听鼠标滚轮事件+可用于在页面上滚动的键(页面上/下、空格键、箭头键等):

如果您注意到“您的”滚动条处于活动状态,请像上面那样停止:

if($('html, body').is(':animated'))
    $('html, body').stop();

$(窗口).scroll(函数(){console.log('scroll');})如果你按编程方式滚动,是否会触发此事件?@Johan yessir确实有比鼠标滚轮更多的滚动方式。滚动可以通过向上键、向下键、滚动滚轮、鼠标单击滚动条或某种不寻常的方式触发-这就是为什么要监听window.scroll事件,而不是触发所说事件的事情。是的,你是对的。我很想找到一个巧妙的办法来解决这个问题。
$(document).keyup(function(e){

    if($.inArray(e.which, [33,34,32,38,40]) !== -1)
        console.log('key');
        //potential scroll by key

});

$(document).bind((/Firefox/i.test(navigator.userAgent)) 
                                 ? 'DOMMouseScroll' 
                                 : 'mousewheel', function(e){

    var evt = window.event || e;   
    evt = evt.originalEvent ? evt.originalEvent : evt;               
    var delta = evt.detail ? evt.detail*(-40) : evt.wheelDelta;

    if(delta > 0) 
        console.log('mousewheel up');
        //scroll up
    else
        console.log('mousewheel down');
        //scroll down  
});
if($('html, body').is(':animated'))
    $('html, body').stop();