gpt4 book ai didi

javascript - 禁用预测滚动 - 鼠标滚轮 (OnScroll) 事件触发过于频繁(触摸板)

转载 作者:数据小太阳 更新时间:2023-10-29 05:32:44 27 4
gpt4 key购买 nike

我正在执行 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;});

这是一个简单的代码,每秒“允许”一次鼠标滚动事件。

如果我进行快速触摸板滚动,mousewheel 事件将被触发约 300 次。一秒条件是让 3 个事件发生。我的手指在触摸板上停留的时间远不到一秒钟。

通过这个测试,我发现 mousewheel 事件仍然被激发(几乎连续 3 秒),即使我的手指已经离开触摸板。

是否有 Javascript 函数或解决方法/技巧/黑客来避免这种行为?

可能是触摸板的 onTouchEnd 事件?

最佳答案

要实现这一点,您必须区分鼠标滚动事件和触摸板事件,使用 JavaScript(目前)还不可能做到这一点。已经被问到问题How to capture touch pad input .

Pointer Events目前处于编辑草稿状态,尚未被任何浏览器支持。另见 touch events docs on MDN .

关于javascript - 禁用预测滚动 - 鼠标滚轮 (OnScroll) 事件触发过于频繁(触摸板),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34831120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com