我在Chrome和Edge浏览器(最新版本)中遇到了一个不寻常的鼠标事件处理问题,这在Firefox中没有遇到。该问题涉及鼠标移动过程中movementX
和movementY
的值意外跳跃。
背景:我正在开发一个需要精确鼠标移动跟踪的Web应用程序。我使用requestPointerLock()
来锁定鼠标指针以获得沉浸式体验。该应用程序严重依赖MouseEvent
的movementX
和movementY
属性来跟踪鼠标的移动。
问题:当我慢慢移动鼠标时,movementX
和movementY
的值偶尔会跳到一个很大的数字(例如,从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
中的movementX
和movementY
,特别是当指针被锁定时,是否存在任何已知的问题?对于如何处理这些意外的鼠标移动值跳跃,任何见解或建议都将不胜感激。
1条答案
按热度按时间5hcedyr01#
这在基于Chromium的浏览器中已经存在很长时间了,并且与具有高轮询率的鼠标有关,但他们最终在Chromium 88+中提供了一个解决方案。