我在Stackoverflow上搜索过,但似乎无法找到这个问题的满意答案.基本上我想知道滚动是通过鼠标滚轮还是浏览器滚动条完成的.
这样的东西可能适合你,但它不是最好的解决方案.
如果a wheel事件恰好发生在scroll事件之前,那么滚动就完成了轮子,否则就完成了使用其他东西然后轮子.触发的两个事件之间存在微小的时间差异,这就是我使用阈值的原因currTime - lastWheelTime > 30.
$('.test').on('scroll wheel DOMMouseScroll mousewheel', function(e) {
var lastWheelTime,
currTime = (new Date()).getTime();
if( e.type === 'scroll' ) {
lastWheelTime = $(this).data().lastWheelTime || 0;
if( currTime - lastWheelTime > 30 ) {
$('.info').text('no wheel');
} else {
$('.info').text('with wheel');
}
} else {
$(this).data().lastWheelTime = (new Date()).getTime();
}
});Run Code Online (Sandbox Code Playgroud)
.test {
width: 200px;
height: 300px;
border: 1px solid red;
overflow: auto;
}
.inner {
height: 600px;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="info"></div>
<div class="test">
<div class="inner"></div>
</div>Run Code Online (Sandbox Code Playgroud)