代码之家  ›  专栏  ›  技术社区  ›  cubefox

为什么mac和windows上的deltaY on‘wheel’事件不同?

  •  1
  • cubefox  · 技术社区  · 4 年前

    当我试图获得用户的滚动速度时,mac和windows之间的结果不一致。

    繁殖

    1. 打开 this codesandbox
    2. 用鼠标向下滚动1“勾”(使用没有平滑滚动的鼠标)

    问题

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

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

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

    更多背景

    • 这适用于“无限画布”类型的应用程序(如 tldraw ). 我想在用户向后滚动时“缩小”,在用户向内滚动时“放大”。
    • 我想使用滚动速度(而不仅仅是滚动方向),因为否则它会感觉笨重
    • 我知道这是可能的,因为 figma 可以根据鼠标滚轮速度进行放大/缩小。尽管他们使用webgl,所以不确定他们是否有权访问普通wheel事件没有的属性
    • 我不能简单地检查deltaY是否>100,因为在mac deltaY上,当用户快速滚动时,可以获得超过100
    • 我尝试了所有的解决方案 this question .他们都没有在mac/windows上工作
    0 回复  |  直到 4 年前