pointermove与 mousemove的比较(除去额外功能外)
MDN says 指出 pointermove 事件“与 mousemove 事件非常相似,但具有更多特性”。
这与“完全相同[…]但有更多特性”的说法不同,意味着 pointermove 与 mousemove 不仅在额外特性上存在差异,也在其他方面有所不同。还有哪些差异?
解决方案
-
mousemove在触摸屏上轻触时触发。pointermove不会。 -
pointermove在触摸屏滑动开始阶段会触发几次。mousemove不会。 -
mousemove提供整数CSS像素坐标。
pointermove 提供以设备像素精度表示的非整数CSS像素坐标。因此,通常来说,它的精度更高。
在Chromium和 Firefox中经过测试。
如果你的 devicePixelRatio 是 1,请使用页面缩放来改变它,并查看不同精度等级之间的差异。
onmousemove = e => { div1.textContent = e.clientX + ', ' + e.clientY; };
onpointermove = e => { div2.textContent = e.clientX + ', ' + e.clientY; };
<div id="div1"></div>
<div id="div2"></div>
- 在某个应用中,
mousemove和pointermove在拖拽时在某些浏览器中目标元素不同。我还没有查清原因。 - 只有
pointermove(而不是mousemove)在指针改变“按钮状态、压力、倾斜或接触几何形状(例如宽度和高度)”时才会派发,即使clientX和clientY没有改变。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。