2

我有一个<div>在我的脚本中创建并附加到另一个<div>. 我有:

 coverElm.onmousedown = mouseDownEventHandeler;
 document.onmouseup = mouseUpEventHandeler;
 document.onmousemove = mouseMoveEventHandeler;

我定义了函数并且工作得很好,并跟踪鼠标是否用 boolean 关闭mouseDown

问题- 当鼠标被按下并被释放时,document.onmouseup它永远不会被处理。我认为这是因为它对<div>女巫中的任何东西的拖累只是几句话。我也有这个没有文字的问题。

所以我正在寻找一种防止这种奇怪的拖动行为的方法,或者onmousedrag查看鼠标是否被按下的方法 -不使用鼠标向上和鼠标向下方法

这是我的功能:

function mouseUpEventHandeler(e) {
        mouseDown = false;
}
function mouseDownEventHandeler(e) {
        mouseDown = true;
}
function mouseMoveEventHandeler(e) {
        if (mouseDown) {
               coverElm.innerHTML ="<p>Mouse down and dragging</p>";
        }
}
4

2 回答 2

2

90% 的情况下,这是因为被拖动的元素位于带有事件侦听器的元素的前面mouseup,所以下面的父元素永远不会收到事件。

通常,这可以通过使用addEventListener而不是事件的内联形式来解决。解决此问题的另一种方法是在eventListener释放鼠标时为拖动的元素提供一个 for 。此外,div只要元素开始拖动(通过zIndex属性),您就可以将它放在所有其他元素的前面。

编辑:我编写了一些概念验证代码:http: //jsfiddle.net/2BkEM/5/

于 2012-08-15T18:09:49.190 回答
2
$j(divID).bind('dragstart', function (event) { event.preventDefault() });

谢谢大家

于 2012-08-15T18:45:57.270 回答