鼠标悬停和鼠标移出事件是否不匹配?

Can mouseover and mouseout events be mismatched?

本文关键字:鼠标 不匹配 是否 移出 悬停 出事件      更新时间:2023-09-26

我试图跟踪鼠标是否在我的HTML元素内(注意:它也有子元素)。一个简单的解决方案(我现在正在使用)是附加到mouseover/mouseout并计算它们-如果"mouseover"比"mouseouts"更多,那么鼠标应该在

但是我想知道——这会失败吗?在某些(或多或少奇怪的)情况下,是否可以"跳过"这些事件中的任何一个,从而使我得到一个不匹配的计数?

一些简单的试验没有产生任何这样的情况,但是有很多的边缘情况,我不可能想到所有的。有人遇到过这样的情况吗?

澄清:我有不是遇到这样的问题。我想知道这样的问题是否可能

添加:一个案例刚刚出现在我的脑海中- mouseover/mouseout在子元素上被阻止在其处理程序中冒泡。我的代码不是这种情况,但仍然有可能。

我也遇到过类似的事情。快把我逼疯了。我得出的假设/结论是,至少在我的情况下,这可能与事件冒泡有关。你在使用jquery吗?仔细检查未压缩的库可能是值得的。如果你真的需要保证。否则,如果你的代码足够灵活,你可以绕过它,我就是这样做的。

冒泡很可能是问题的根源。当鼠标移动到内部元素中时,会得到一个mouseout事件。http://www.quirksmode.org/dom/events/mouseover.html

建议,使用库。它们抽象了不冒泡的mouseenter和mouseleave事件之间的跨浏览器差异。http://api.jquery.com/mouseenter/

如果你不想使用库,在修复计数器之前,你需要自己检查鼠标是否在你跟踪的div内。如果您展示了您拥有的代码,那么向您展示如何修复它就更容易了。