Safari/Chrome 中的 MouseOver MouseOut 问题

问题描述 投票:0回答:2

这很奇怪,我很震惊我以前从未注意到它。它是这样工作的,如果你的鼠标静止不动并且一个 div 以编程方式移动到你的鼠标下方,则不会在 Chrome/Safari 中触发

mouseover
事件 -
mouseout
也是如此。当然,如果您在 div 移动到鼠标下方后稍微移动鼠标,它将按预期工作。

我在 jsFiddle 上创建了一个demo。只需让 div 在您的鼠标下振荡,在 Firefox 中运行良好,在 Chrome 或 Safari 中运行不正常 - 尚未在 IE 中进行测试。

我倾向于这个解决方案......基本上使用这个滚动我自己的

mouseenter
mouseleave
事件:

if (mouseX > divLeft && mouseX < divRight &&
    mouseY > divTop && mouseY < divBottom){
    // mouse is inside div
}

我说

mouseenter
然后离开,因为这种方法不会冒泡

我想知道是否还有其他人对此有想法......我觉得有一种简单的方法可以解决它,但到目前为止谷歌还没有发现任何问题。

javascript google-chrome safari dom-events
2个回答
3
投票

https://bugs.webkit.org/show_bug.cgi?id=4117

你可能会发现这个错误很有趣。


0
投票

这似乎在 Safari 上继续发生。我寻求的解决方法是使用 css 。即使

mouseover
不会被触发,
:hover
:not(:hover)
css 伪元素也可以工作。所以,如果你想在悬停时做的事情通过 css 是适用的,比如隐藏/显示一个元素,这是一个可行的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.