如何从Firefox中的“拖动”事件中获取鼠标位置

时间:2014-07-24 19:31:54

标签: javascript html5 drag-and-drop

使用"可拖动" domNoes,' drag'事件似乎根本不包含任何鼠标信息(如offsetX和offsetY),就像在chrome中一样。如何在拖动时获取此信息?

我试过设置一个鼠标移动器'文档上的事件处理程序,但似乎在拖动某些内容时不会触发。在chrome中似乎也是如此。多么拖累......

我使用的是Firefox 30。

2 个答案:

答案 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事件中要求clientYdrag,则会获得零。如果您将该元素拖到包含dragover的元素上,并询问事件的坐标,您将获得相对于dragover侦听元素的x和y。

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