我正在执行 Javascript onScroll
。
我的代码在任何普通计算机鼠标上都很好用,但是当我使用笔记本电脑的触摸板时,我遇到了以下情况:
- 当手指移动滚轮时,我的鼠标会触发 (约1到8个)
mousewheel
事件。 - 当两个手指接触触摸板并在空中抬起手指后,我的触摸板会触发更多 (~60个)
mousewheel
事件且持续触发。
我从移动触摸设备中了解了这种行为。该功能称为“预测性触摸” - 如果您的手指移动具有足够的加速度,则滚动将继续。
我认为触摸板驱动程序设置了这种“平滑滚动”行为。
为了调试此案例,我使用了以下代码:
/* Handle Mouse-Wheel Scrolling */
var lastChange = +new Date();
$(window).bind('mousewheel', function(e){
console.log("mw");
if(+new Date() - lastChange > 1000){
console.log("mw allowed");
if(e.originalEvent.wheelDelta > 0) {/*go to previous*/}
else{ /*go to next*/}
lastChange = +new Date();
}
return false;});
这是一个简单的代码,每秒钟“允许”一次鼠标滚动事件。
如果我快速地触摸触控板进行滚动,鼠标滚轮事件将被触发约300次。一秒钟的条件可以让3个事件发生。我的手指在触控板上的时间远远不到一秒钟。
通过这个测试,我发现即使我的手指已经离开触控板,鼠标滚轮事件仍然会持续触发(几乎连续3秒)。
有没有JavaScript函数或绕过/技巧/黑客来避免这种行为呢?
也许像触控板的
onTouchEnd
事件那样的东西?