JavaScript:onMouseOver 事件不能与其他事件一起正常工作

Posted

技术标签:

【中文标题】JavaScript:onMouseOver 事件不能与其他事件一起正常工作【英文标题】:JavaScript: onMouseOver Event Not Working Properly With Other Events 【发布时间】:2011-06-30 11:58:41 【问题描述】:

我有一个包含 15x15 表格的 html 网页,我还有一个小方形 div,当您在 div 上按住鼠标左键时,它会跟随鼠标。

我已经为 15x15 表格分配了一个 onmouseover 事件,这样当鼠标悬停在一个单元格上时,一个名为“gridPlacement”的变量被设置为鼠标悬停在表格单元格的唯一 ID 的值。

onmouseover 事件似乎可以正常工作,只要将鼠标悬停在单元格上,变量“gridPlacement”就会设置为单元格的 ID。

但是当 onmousedown 和 onmousemove 事件被触发时(当鼠标在我前面提到的 div 上按住鼠标左键时),有时当您将鼠标悬停在单元格上时,变量“gridPlacement”没有设置,有时您必须在单元格上移动鼠标几次才能使其工作。

似乎 onmousedown 和 onmousemove 事件似乎对我的 15x15 桌子上的 onhover 事件有影响。

有人知道为什么会发生这种情况以及如何解决这个问题吗?

希望您能理解我,我已尽力解释我的问题。

问题解决了!

改变用户拖动元素的偏移量就可以了,谢谢大家的帮助! :)

【问题讨论】:

你能发一个链接来说明这个问题吗? 我在本地开发,不好意思! @AlexPriceAP:你可以用jsfiddle.net重现你的问题 那么您的意思是 onmousedown + onmousemove + onhover 会影响设置为 onhover 的变量吗?如果是这样,那对我来说很有意义,因为现代浏览器倾向于尝试对您没有编写脚本的内容(选定的文本、页面/选项卡/文档)进行大量“拖动”。 @D_N: 不,变量本身没有受到影响,表的 onmouseover 事件似乎受到影响并且在 onmousemove 事件运行时无法正常工作:(,我认为这是onmousemove 无论如何都会影响它,或者可能是因为鼠标没有正确悬停在桌子上?但如果是这种情况,我怎么能让它认为鼠标悬停在桌子上而不是悬停在我拖动的 div 上? 【参考方案1】:

您询问的问题发生了,因为当您按下按钮时,div 位于鼠标下方,因此您实际上并没有将单元格悬停(至少我从您的描述中得到了)。一种解决方法是在您退出某个单元格(onmouseout)时设置所需的变量,但这对您没有帮助,因为我想您想知道您已经结束的女巫单元格,所以我想您可以获取鼠标位置并进行比较到单元格的位置...除非您得到更好的答案,因为这有点...不是那么容易。

【讨论】:

【参考方案2】:

我认为 zozo 是正确的。我遇到了类似的问题,我使用的解决方法是更改​​鼠标后元素的偏移量,使其不会直接出现在鼠标下方(可能是侧面/上方/下方的几个像素或其他东西)。

希望这会有所帮助。

【讨论】:

以上是关于JavaScript:onMouseOver 事件不能与其他事件一起正常工作的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript事件

JavaScript基础 鼠标放上触发事件onmouseover 鼠标移开触发事件onmouseout

onmouseover事件

JS中onmouseover与onmouseout的bug

JavaScript 评分

JavaScript中的鼠标悬停事件的用法详解