除非用户开始滚动,否则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();