我正在执行 JavaScriptonScroll
。
我的代码适用于任何普通的计算机鼠标,但是当我使用笔记本电脑的触摸板时,我遇到以下情况:
- 我的鼠标点火(大约 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;});
这是一个简单的代码,每秒“允许”一次鼠标滚动事件。
如果我进行快速触摸板滚动,mousewheel
事件被触发约 300 次。一秒条件是让 3 个事件发生。我的手指在触摸板上停留的时间还不到一秒钟。
通过这次测试,我发现mousewheel
即使我的手指已经离开触摸板,事件仍然会触发(几乎连续 3 秒)。
是否有 Javascript 函数或解决方法/技巧/黑客来避免这种行为?
像一个onTouchEnd
也许是触摸板事件?
为了实现这一点,您必须区分鼠标滚动事件和触摸板事件,而使用 JavaScript 尚无法做到这一点。已经有人提出疑问了如何捕获触摸板输入 https://stackoverflow.com/questions/34448257/how-to-capture-touch-pad-input.
指针事件 https://w3c.github.io/pointerevents/目前处于编辑草稿状态,尚未得到任何浏览器的支持。也可以看看MDN 上的触摸事件文档 https://developer.mozilla.org/en-US/docs/Web/API/Touch_events.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)