检测用户的jquery事件触发器或代码调用

我有一些window.onscroll事件

 $(window).scroll(function(e){ //My Stuff }); 

但在我的代码中,我将动画滚动调用到某些地方

 $('html, body').stop().animate({ scrollTop:555 }, 1000); 

所以我如何检测页面是由用户滚动或由我的代码调用。 我当前的解决方案是在我的代码中调用animate之前放置一个标志,然后清除它,但这不是一个聪明的解决方案。 我也读过关于检测e.whiche.originalEvent但它不起作用。 我想你的专家在这里有一个很好的解决方案。

 $('#scroller').scroll(function(e) { if (e.originalEvent) { // scroll happen manual scroll console.log('scroll happen manual scroll'); } else { // scroll happen by call console.log('scroll happen by call'); } }); $('#scroller').scroll(); // just a initial call 

当你通过调用滚动时, e.originalEvent将是undefined但是当手动scroll时,它将给出scroll对象。

DEMO

我已经重新提出了这个问题,得到了2个有用的答案。
我会在这里链接这个问题给其他人找到这个post。

检测是否在jQuery中手动触发滚动事件