Javascript 如何从';拖动';Firefox中的事件

Javascript 如何从';拖动';Firefox中的事件,javascript,html,drag-and-drop,Javascript,Html,Drag And Drop,对于“可拖动”的domNoes,“拖动”事件似乎根本不像在chrome中那样包含任何鼠标信息(如offsetX和offsetY)。拖动时如何获取此信息 我曾尝试在文档上设置“mousemove”事件处理程序,但似乎在拖动某个对象时不会触发该处理程序。在chrome中似乎也是如此。真讨厌 我正在使用Firefox 30。更新 很抱歉延迟回复,我一直很忙。如果您将mousemove事件附加到实际文档而不是元素,那么它仍然会触发。例如: document.addEventListener("mouse

对于“可拖动”的domNoes,“拖动”事件似乎根本不像在chrome中那样包含任何鼠标信息(如offsetX和offsetY)。拖动时如何获取此信息

我曾尝试在文档上设置“mousemove”事件处理程序,但似乎在拖动某个对象时不会触发该处理程序。在chrome中似乎也是如此。真讨厌


我正在使用Firefox 30。

更新

很抱歉延迟回复,我一直很忙。如果您将mousemove事件附加到实际文档而不是元素,那么它仍然会触发。例如:

document.addEventListener("mousemove", moveHandler, true);
请注意,我将末尾的布尔值设置为“true”;这意味着事件在捕获阶段激发。它应该根据需要更新鼠标移动功能中的坐标。至于获取要拖动的元素,您可以从拖动处理程序中的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,并将坐标存储在全局变量中,以便可以在拖动侦听器中访问这些坐标。

拖动事件用于正在拖动的元素
dragover
可用于保持静止的其他元件,以便在其上拖动物体。如果在
drag
事件上请求
clientX
clientY
,您将得到零。如果将该元素拖动到具有
dragover
的元素上,并询问该事件的坐标,则将得到相对于
dragover
侦听元素的x和y


最简单的示例是将
dragover
应用于文档对象,然后在其上拖动某个对象并打印x和y。

以及如何获得被拖动的元素?正如我所理解的“draggable”,所讨论的元素本身根本不会移动,除非您在拖动事件处理程序中影响它。另外,正如我在问题中提到的,mousemove在拖动某些东西时不会被解雇。