1

我希望一些 js 会自动在页面下方滚动一点点,但是我也希望这个滚动可以被用户打断。

当使用 jquery 自动滚动时,当您使用 .animate 为滚动设置动画,然后用户在动画滚动仍在进行时开始滚动,它们会相互交互并产生奇怪的跳跃效果。

有没有办法让用户在 javascript 滚动期间滚动它只是停止 javascript 滚动?

4

2 回答 2

0

这是无法完成的,因为您不知道最终用户是滚动还是您通过 javascript 滚动了页面。

无论原因如何,只要元素的滚动位置发生变化,就会发送滚动事件。在滚动条上单击或拖动鼠标、在元素内拖动、按箭头键或使用鼠标滚轮都可能导致此事件。

文档


我试图做但失败了,因为上述原因:

// callback for the scroll event
$(document.body).scroll(function(){
    // Stop the scrolling!
    $('html, body').stop();
});

一个不工作的演示......

于 2013-05-19T17:50:09.463 回答
0

其他用户的回答实际上是不正确的,有可能并且之前已经回答过: 如何区分手动滚动(通过鼠标滚轮/滚动条)与 Javascript/jQuery 滚动?

检查答案

"$('body,html').bind('scroll mousedown wheel DOMMouseScroll mousewheel keyup', function(e){
 if ( e.which > 0 || e.type == "mousedown" || e.type == "mousewheel"){
  $("html,body").stop();
 }
})"

我已经更新了以前的用户 JS Fiddle 以使用建议的解决方案,并且效果很好。 http://jsfiddle.net/Lwvba/7/

于 2013-05-19T18:24:28.837 回答