使用"可拖动" domNoes,' drag'事件似乎根本不包含任何鼠标信息(如offsetX和offsetY),就像在chrome中一样。如何在拖动时获取此信息?
我试过设置一个鼠标移动器'文档上的事件处理程序,但似乎在拖动某些内容时不会触发。在chrome中似乎也是如此。多么拖累......
我使用的是Firefox 30。
答案 0 :(得分:0)
<强>更新强>
很抱歉延迟回复,我一直很忙。如果您将mousemove事件附加到实际文档而不是元素,那么它仍然应该触发。例如:
document.addEventListener("mousemove", moveHandler, true);
请注意,我将结尾处的布尔值设置为&#34; true&#34 ;;这意味着事件在捕获阶段触发。它应该根据您的需要更新鼠标移动功能中的坐标。至于获取被拖动的元素,您可以在拖动处理程序中从event.target获取该元素引用,如下所示:
function dragHandler(e) {
var el = e.target; //this is the element being dragged
}
您可以使用它来确定您要拖动的元素的偏移量:
var rectObject = element.getBoundingClientRect();
var top_offset = rectObject.top;
var left_offset = rectObject.left;
如果您需要鼠标坐标,则需要将一个mousemove事件监听器附加到DOM并将坐标存储在全局变量中,以便您可以在拖动侦听器中访问它们。
答案 1 :(得分:0)
drag
个事件用于被拖动的元素。 dragover
可用于其他保持静止的元素,以便将某些东西拖过它们。如果您在clientX
事件中要求clientY
或drag
,则会获得零。如果您将该元素拖到包含dragover
的元素上,并询问该事件的坐标,您将获得相对于dragover
侦听元素的x和y。
最简单的例子就是将dragover
应用于文档对象,然后在其上拖动并打印x和y。