为什么我的坐标(pageX/pageY)在拖动结束时改变
Why do my coordinates (pageX/pageY) change at end of drag?
我试图实现一个HTML5可拖拽,但我看到的东西不太有意义。我有一个React组件,像这样:
class Draggable extends React.Component {
_onDragEnd(e) {
console.log(`end`, e.pageX)
}
_onDrag(e) {
console.log(`drag`, e.pageX)
}
_onDragStart(e) {
console.log(`start`, e.pageX)
}
return <div draggable={true}
onDrag={this._onDrag.bind(this)}
onDragEnd={this._onDragEnd.bind(this)}
onDragStart={this._onDragStart.bind(this)}
}
}
当我拖动它时,我看到以下输出:
start 276
drag 279
drag 280
drag 281
drag 282
drag 283
drag 285
drag 286
drag 287
drag 288
drag 289
end 2209
请注意,在拖动结束时的pageX
几乎比之前发生的drag
事件的pageX
大2k。因为我知道我没有在最后一个drag
事件和dragEnd
事件之间移动鼠标2k,所以我很困惑为什么dragEnd
pageX
如此大。
使用过HTML 5拖放的人见过类似的情况吗?如果有,你知道如何修复它吗?我意识到我可以通过将pageX
保存在我的_onDrag
处理程序中来解决这个问题,但我很想了解为什么dragEnd
事件的pageX
如此不同。
编辑:我只是尝试使用clientX
和screenX
而不是pageX
。clientX
在拖拽结束时有同样奇怪的跳跃,但由于某种原因,最后的screenX
与最后一次拖拽的screenX
匹配。然而,我不认为我想使用screenX
,因为据我所知,如果我使用screenX
和用户拖动足以使页面滚动的screenX
将是不准确的。
不幸的是,这个问题已经很老了,但也许我仍然可以帮助其中一个。坐标显然是通过draggable元素确定的。
可能是ghostElement.getBoundingClientRect()
.
在Chrome客户端跳转到0 onDrag,在Safari它的行为有点不同。有趣的白色它是在Chrome上onDragEnd再次正确,但在Safari上onDrag的错误是不存在的,但onDrag是错误的。
我实际上是在react onDrag处理程序之上使用这个作为保护:
if (event.clientY === 0) return
拖动后,我根据我对onDrag的学习计算信息,因为safari在这里会有问题。
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 删除对HTML元素的拖动
- jQuery UI可排序-多连接列表拖动
- 禁用SVG拖动
- 旋转后拖动对象
- JQuery UI可拖动潜水与滚动棒到鼠标
- jsPlumb-拖动克隆而不进行复制
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- 如何使元素在可拖动元素内可单击
- 如何在使用Kinetic拖动同一对象后,在旋转动画中保持先前的偏移
- 在d3中拖动一条线
- 模拟双击拖动结束 - jquery UI
- 如何捕获拖动事件的任何结束
- Google 地图拖动事件不会捕获中心更改,直到拖动在 Chrome 设备模式下结束
- 如何在当前行中突出显示拖动开始和拖动结束之间的所有单元格,拖动只能是当前选择行
- fullcalendar中删除的外部元素的结束时间没有'拖动到新位置之前不应用
- 为什么我的坐标(pageX/pageY)在拖动结束时改变
- 当拖动结束时,HTML输入元素范围检测
- Raphael JS:在拖动结束时触发点击
- 开始触摸一个元素,拖动,结束触摸另一个元素