Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在拖动过程中释放鼠标时忽略Java脚本mouseUp事件_Javascript_Html_Javascript Events_Mouseevent - Fatal编程技术网

Javascript 在拖动过程中释放鼠标时忽略Java脚本mouseUp事件

Javascript 在拖动过程中释放鼠标时忽略Java脚本mouseUp事件,javascript,html,javascript-events,mouseevent,Javascript,Html,Javascript Events,Mouseevent,因此,我在脚本中创建了一个元素,并将其附加到另一个中。我有: coverElm.onmousedown = mouseDownEventHandeler; document.onmouseup = mouseUpEventHandeler; document.onmousemove = mouseMoveEventHandeler; 我已经定义了这些函数,它们工作得很好,并且可以跟踪鼠标是否按下布尔值mouseDown 问题-当按下鼠标并释放时,文档。onmouseup永远不会被处理。我

因此,我在脚本中创建了一个
元素,并将其附加到另一个
中。我有:

 coverElm.onmousedown = mouseDownEventHandeler;
 document.onmouseup = mouseUpEventHandeler;
 document.onmousemove = mouseMoveEventHandeler;
我已经定义了这些函数,它们工作得很好,并且可以跟踪鼠标是否按下布尔值
mouseDown

问题-当按下鼠标并释放时,
文档。onmouseup
永远不会被处理。我认为这是因为它只是拖动了
中的任何内容,而巫婆只是几个字的文本。我也有这个没有文字的问题

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

[编辑]以下是我的功能:

 function mouseUpEventHandeler(e) {
        mouseDown = false;
}
function mouseDownEventHandeler(e) {
        mouseDown = true;
}
function mouseMoveEventHandeler(e) {
        if (mouseDown) {
               coverElm.innerHTML ="<p>Mouse down and dragging</p>";
        }
}
函数mouseUpEventHandeler(e){
mouseDown=false;
}
函数mouseDownEventHandeler(e){
mouseDown=true;
}
函数mousemoveventhandeler(e){
如果(鼠标向下){
coverElm.innerHTML=“鼠标向下拖动”

”; } }
90%的情况下,这是因为拖动的元素位于带有
mouseup
事件侦听器的元素前面,因此下面的父元素永远不会获取事件

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

编辑:我快速编写了一些概念验证代码:

90%的情况下,这是因为拖动的元素位于带有
mouseup
事件侦听器的元素前面,因此下面的父元素永远不会获取事件

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

编辑:我快速编写了一些概念验证代码:

谢谢大家


谢谢大家

您绝对确定您的鼠标处理程序没有被呼叫吗?我们能看看你的鼠标密码吗?我怀疑你的事件处理程序中有一个错误导致它自动失败,从而给人一种没有被调用的印象。我去掉了功能,但我会发布我所拥有的内容。你绝对确定你的鼠标处理程序没有被调用吗?我们能看看你的鼠标密码吗?我怀疑你的事件处理程序中有一个错误,导致它自动失败,从而给人一种没有首先调用它的印象。我去掉了功能,但我会发布我所拥有的。div放在嵌入式视频上,所以我有它的位置:绝对,所以它在视频前面。这肯定是在视频前面,我用背景色来检查。此外,在拖动过程中,可以看到div四处拖动。它只是在拖动鼠标时似乎没有注册鼠标,并且mouseUp事件被添加到文档中。您仍然认为
addEventListener
值得使用吗?如果有,我应该参考哪些资源?谢谢这是真的。除非某个元素取消了
mouseup
事件,否则document元素最终应该会看到它。那么,是否有一个简单的检查来查看鼠标是否按下了?我找不到什么好方法?我使用的是jquery和Ajax,因此如果有帮助的话,可以很容易地访问这两者。对于嵌入式视频,最好的方法是让一个元素在开始拖动元素时覆盖整个屏幕。这样,当您单击要拖动的元素时,整个屏幕都覆盖着一个div,包括要拖动的元素。然后,将
mousemove
mouseup
事件侦听器添加到这个新的div中,当释放鼠标时,div的
zIndex
移回所有内容后面。因为您使用的是
embed
标记,我很确定
addEventListener
回调不会像正常情况下那样传播。如果您想进一步查看
addEventListener
函数,这里有一个链接:div被放置在嵌入式视频上,所以我有它的位置:绝对,所以它在视频前面。这肯定是在视频前面,我用背景色来检查。此外,在拖动过程中,可以看到div四处拖动。它只是在拖动鼠标时似乎没有注册鼠标,并且mouseUp事件被添加到文档中。您仍然认为
addEventListener
值得使用吗?如果有,我应该参考哪些资源?谢谢这是真的。除非某个元素取消了
mouseup
事件,否则document元素最终应该会看到它。那么,是否有一个简单的检查来查看鼠标是否按下了?我找不到什么好方法?我使用的是jquery和Ajax,因此如果有帮助的话,可以很容易地访问这两者。对于嵌入式视频,最好的方法是让一个元素在开始拖动元素时覆盖整个屏幕。这样,当您单击要拖动的元素时,整个屏幕都覆盖着一个div,包括要拖动的元素。然后,将
mousemove
mouseup
事件侦听器添加到这个新的div中,当释放鼠标时,div的
zIndex
移回所有内容后面。因为您使用的是
embed
标记,我很确定
addEventListener
回调不会像正常情况下那样传播
$j(divID).bind('dragstart', function (event) { event.preventDefault() });