当您释放另一个元素或外部某处的按钮时,不会触发mouseup事件

时间:2018-08-02 19:40:33

标签: javascript mouseevent mousedown mouseup

我有两个div元素。当我在其中一个上按下鼠标按钮,然后将鼠标移到另一只或其他位置然后释放按钮时,不会触发mouseup事件。它实际上是被触发的,但是仅在前几个随机时间(通常为1…10)内触发。然后停止。鼠标光标变为停止符号,并且仅触发mousedown事件。
我尝试将mouseup事件监听器添加到document.documentElementdocument元素中,如此处建议的那样,但这没有帮助。几次成功的鼠标举动后,鼠标光标仍会变成停止信号,并且在重新加载页面之前不会触发。
如果您释放同一元素上的按钮,它仍然可以完美触发。
无论您从何处开始和结束,释放鼠标按钮时如何使mouseup事件始终被触发?这对我的程序至关重要。
我在Chrome浏览器中进行了检查。在Firefox中,它的工作原理几乎相同,但是在另一个然后启动的元素上可能发生的mouseup事件的数量却更多(最多20个)。然后出现相同的停车标志。 document
Here is a screenshot

我找到了解决方案!

Here is a JSFiddle
那么,当您按下按钮移动鼠标时,为什么浏览器会显示停止标志?因为它认为您正在尝试拖动此元素!但是为什么当您第一次(或几次第一次)这样做时它不抗议?因为是第一次按下鼠标,所以您只需... 选择该元素。然后尝试拖动它,只有这样才能引起浏览器的抗议,并且显示停止标志。 在显示停车标志期间,浏览器无法触发任何鼠标事件。
因此,如何防止浏览器认为您将要选择并拖动此元素。非常简单只需在CSS中为此元素添加-webkit-user-select: none;(对于Chrome浏览器,对于Firefox,前缀将为-moz-,依此类推)。
现在所有的鼠标事件都将起作用,而不管何时,为什么以及按什么顺序按下鼠标按钮!
This topic was very much helpful.

0 个答案:

没有答案