我正在执行Javascript onScroll
。我的代码对任何普通的计算机鼠标都适用,但是当我使用笔记本的触摸板时,会遇到以下情况:
mousewheel
当手指移动滚轮时,我的鼠标触发(大约1到8个)事件。mousewheel
当两个手指触摸触摸板时,我的触摸板会触发更多(〜60)事件,并且在我的手指再次悬空后继续触发。我从移动触摸设备知道这种行为。该功能称为“ Predictive Touch”(预测触摸)-如果在抬起手指之前,手指的移动具有足够的加速度,则滚动将继续。
我认为触摸板驱动程序正在设置此“平滑滚动”行为。
为了调试这种情况,我使用了以下代码:
/* 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;});
这是一个简单的代码,每秒钟“允许”鼠标滚动事件。
如果我快速进行触摸板滚动,则将mousewheel
触发该事件约300次。一秒钟的条件是让3个事件发生。我的手指在触摸板上的时间不到一秒钟。
通过此测试,我发现mousewheel
即使我的手指已经离开触摸板,事件仍会触发(几乎连续3秒)。
是否有Javascript函数或解决方法/技巧/黑客来避免此行为?
有点像onTouchEnd
触摸板事件吗?
为此,您必须区分鼠标滚动事件和触摸板事件,但使用JavaScript尚不可能。已经有人问过如何捕获触摸板输入。
指针事件当前处于“编辑草稿”状态,尚不受任何浏览器支持。另请参阅MDN上的touch events文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句