每帧只会触发一次mousemove事件吗?

5
在这个演示中,按下并移动鼠标将根据鼠标位置绘制点。绘制方法侦听mousemove回调,但它绘制的是离散的点,显示mousemove事件不是连续触发的。
此外,我收集了event.timeStamp并在控制台中记录。我发现相邻事件之间的偏移量接近16.7毫秒。所以mousemove事件每帧只触发一次吗?

只是为了添加一个数据点,我在Arch Linux上的Gnome桌面环境中,在Firefox和Chromium浏览器上,60Hz的显示器上确切地记录到了60个鼠标移动事件。如果你想在浏览器中进行高质量的绘画,这真的会带来很多问题。 - Konrad Höffner
1个回答

9
mousemove事件的频率是由实现定义的,没有任何规范定义。
用户代理在指针设备移动时悬停在元素上时必须分派此事件。当指针设备移动时,事件的频率因实现、设备和平台而异,但应为持续的指针设备运动触发多个连续的mousemove事件,而不是每次鼠标移动都触发单个事件。鼓励实现确定最佳频率以平衡响应性能和性能。
-- UI事件,W3C工作草案,2016年8月4日 某些浏览器在某些平台上可能会将其限制为每帧一次。无论如何,不能保证任何可能执行此操作的浏览器会继续执行此操作。
如果您想画一条连续的线,则需要在每两个点之间创建插值数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接