问题描述
我一直在开发基于鼠标移动的功能,它使用起作用。
它的效果很好,但我注意到它有时会出现奇怪的行为。
当我深入研究它时,我发现了movementX
属性似乎有问题。
MDN :
MouseEvent接口的MovementX只读属性提供给定事件和上一个mousemove事件之间鼠标指针的X坐标的差异。 换句话说,该属性的值是这样计算的:
currentEvent.movementX = currentEvent.screenX - previousEvent.screenX
。
但这并非总是如此。
如果您从浏览器外部向内部快速移动指针,由于某种原因,该值可能等于或大于screenX
。
由于无法在JSFiddle中重现此内容,因此我使用了此简单文档并在Chrome中打开了它:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script>
document.addEventListener('mousemove', (event) => {
console.log('movementX:', event.movementX, 'clientX:', event.clientX, 'innerWidth:', window.innerWidth)
})
</script>
</body>
</html>
这是描述问题的图像:
如您所见, movementX
值飙升至914
。
根据该属性的MDN描述,它应返回当前screenX
值849
和前一个也是849
。
而不是等于0
的属性,而是914
。
为什么会这样呢?
浏览器:Chrome,版本72.0.3626.109(正式版本)(64位)
1楼
Hristiyan Dodov
0
2019-02-22 20:42:49
原来这是Chrome中的错误。 我已经报告 。