2011-01-26 24 views
10

Esto es extraño, estoy sorprendido de que nunca lo haya notado. Funciona así, si el mouse está quieto y un div se mueve programáticamente debajo del mouse, un evento mouseover no se activará en chrome/safari, lo mismo ocurre con mouseout. Por supuesto, si mueve el mouse ligeramente una vez que div se haya movido debajo del mouse, funcionará como se esperaba.Problema MouseOver MouseOut en Safari/Chrome

Creé demo on jsFiddle. Simplemente deja que el div oscile debajo del mouse, funciona bien en firefox, no en Chrome o Safari, aún no se ha probado en ie.

Me estoy inclinando hacia esta solución ... básicamente rodar mi propia MouseEnter y MouseLeave eventos usando la siguiente:

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

digo MouseEnter y dejar ya que este método no tendría ningún burbujeo

Me preguntaba si alguien más tenía pensamientos sobre esto ... Tengo la sensación de que hay una manera fácil de solucionarlo, pero hasta ahora Google no ha revelado nada.

+1

Just checked - IE 7 no activa el 'mouseover' o' mouseout' cuando el mouse está quieto. – jball

+0

+1, bastante interesante. Podría ser posible activar el evento con javascript al verificar la posición del mouse a medida que se mueve el div. – JCOC611

+0

genial gracias, solo estaba encendiendo VirtualBox para probar – Zevan

Respuesta

3

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

Usted puede encontrar este error interesante.

+0

muy bueno. Supongo que es solo un error, entonces ... voy a esperar un poco para ver si hay otras soluciones, pero estoy bastante seguro de que marcaré esto como la respuesta correcta. – Zevan

+0

Parece que no hay forma de evitar esto más que la técnica que mencioné en mi pregunta original: acabo de usar eso y funciona bien para lo que necesito. – Zevan

Cuestiones relacionadas