为什么 Mac 和 Windows 上 `wheel` 事件上的 deltaY 不同?

cub*_*fox 6 html javascript google-chrome

当我尝试获取用户的滚动速度时,我在 Mac 和 Windows 之间得到不一致的结果。

重现

  1. 打开此代码沙盒
  2. 使用鼠标,向下滚动 1 个“刻度”(使用不具有平滑滚动功能的鼠标)

问题

使用完全相同的硬件(鼠标/显示器)和浏览器(chrome):

  • 在 Windows 上我得到的值为125
  • 在 Mac 上我得到的值约为12

我需要一种方法来了解用户滚动的速度,从而为所有操作系统提供可比较的结果。

更多背景信息

  • 这适用于“无限画布”类型的应用程序(如tldraw)。我想当用户向后滚动时“缩小”,当用户滚动时“放大”。
  • 我想使用滚动速度(而不仅仅是滚动方向),因为否则感觉很笨拙
  • 我知道这是可能的,因为Figma可以根据鼠标滚轮速度进行放大/缩小。虽然他们使用 webgl 所以不确定他们是否可以访问正常轮子事件没有的属性
  • 我不能简单地检查 deltaY 是否 > 100,因为在 mac 上,当用户快速滚动时 deltaY 可能会超过 100
  • 我尝试了这个问题的所有解决方案。它们都不能跨 mac/windows 运行