Chrome和Edge中的“movementX”和“movementY”值出现意外跳转

41zrol4v  于 10个月前  发布在  Go
关注(0)|答案(1)|浏览(166)

我在Chrome和Edge浏览器(最新版本)中遇到了一个不寻常的鼠标事件处理问题,这在Firefox中没有遇到。该问题涉及鼠标移动过程中movementXmovementY的值意外跳跃。

背景:我正在开发一个需要精确鼠标移动跟踪的Web应用程序。我使用requestPointerLock()来锁定鼠标指针以获得沉浸式体验。该应用程序严重依赖MouseEventmovementXmovementY属性来跟踪鼠标的移动。
问题:当我慢慢移动鼠标时,movementXmovementY的值偶尔会跳到一个很大的数字(例如,从1到627),这表明鼠标位置发生了突然的、不切实际的变化。这个问题似乎只发生在Chrome和Edge中,而不是Firefox中。
代码示例

// Sample code demonstrating how I handle mouse events
document.addEventListener("mousemove", (event) => {
    let movementX = event.movementX;
    let movementY = event.movementY;

    // Process the movement
    // ...
});

字符串

尝试解决

  • 我尝试过使用移动平均滤波器来平滑这些值,但问题仍然存在。
  • 考虑到特定于浏览器的问题的可能性,我已经在最新版本的Chrome和Edge以及未发生问题的Firefox上进行了测试。
    问题:有没有其他人在Chrome和Edge中遇到过这种行为?这些浏览器如何处理MouseEvent中的movementXmovementY,特别是当指针被锁定时,是否存在任何已知的问题?对于如何处理这些意外的鼠标移动值跳跃,任何见解或建议都将不胜感激。
5hcedyr0

5hcedyr01#

这在基于Chromium的浏览器中已经存在很长时间了,并且与具有高轮询率的鼠标有关,但他们最终在Chromium 88+中提供了一个解决方案。

相关问题