如何区分鼠标滚动和拖动窗口滚动';在javascript/jQuery中滚动

如何区分鼠标滚动和拖动窗口滚动';在javascript/jQuery中滚动,javascript,jquery,scroll,Javascript,Jquery,Scroll,我有一个基于滚动实现的功能。 下面是一个小片段: $(window).bind('scroll',function(event) { console.log(event.type); //Task to do } 这里我想区分绑定是通过鼠标滚动还是通过拖动滚动来完成的。 通过检查event.type,两者都将“scroll”作为事件类型返回给我。您可以使用检测鼠标滚轮事件: var isMouseScroll = false; window.addEventListener('whe

我有一个基于滚动实现的功能。 下面是一个小片段:

$(window).bind('scroll',function(event)
{
  console.log(event.type);
  //Task to do
}
这里我想区分绑定是通过鼠标滚动还是通过拖动滚动来完成的。 通过检查event.type,两者都将“scroll”作为事件类型返回给我。

您可以使用检测鼠标滚轮事件:

var isMouseScroll = false;

window.addEventListener('wheel',function(e)
{
  console.log('mouse wheel');
  isMouseScroll = true;
});

window.addEventListener('scroll',function(e)
{
  if(!isMouseScroll) {
    console.log('scroll');
  }

  isMouseScroll = false;
});


注意-不要将车轮与弃用车轮混淆,非标准事件。< /P>拖动鼠标意味着什么?拖动意味着将鼠标保持在滚动条上,然后上下移动页面。您可以考虑使用自定义滚动条插件。使用自定义滚动条插件是我脑海中的最后一个选项。使用Windows滚动条是不可能的吗?+ 1好答案:(我可能会将IsMouseCroll设置为false,如果它不是鼠标滚动,但无论哪种方式都可以)啊,现在我明白了,很抱歉我从错误的方向看它,我的坏^^^@joews:您的答案中的一个小更改解决了我的问题。我们需要在触发“鼠标滚轮”事件时停止滚动的默认操作。我添加了“e.preventDefault()'在wheel的绑定功能中,它为我工作。这里有一个关于支持
wheel
事件的注释,看起来我们需要IE9+。但是看起来你可以先检查
wheel
是否受支持,然后如果不使用
鼠标轮
,这可能是一个非标准功能,因为它是IE首次引入的,并且它由IE6支持,可能在IE6-IE8中运行正常。