Me gustaría que se ejecute algún código de JavaScript cuando el mouse sale de la ventana del navegador. Solo necesito admitir Safari (WebKit).Evento de Javascript cuando el mouse sale de la ventana del navegador
Intenté poner un manejador de mouseout en la ventana. Ese controlador se llama confiablemente cuando el mouse sale de la ventana del navegador. Pero debido al burbujeo, también se llama cuando el mouse se mueve entre los elementos del documento. No puedo encontrar la manera de determinar cuándo el mouse realmente salió de la ventana y cuándo solo se movió entre los elementos.
Cuando el mouse sale de la ventana, se genera exactamente un evento, y el elemento de destino parece ser el elemento en el que el mouse realmente se había terminado. Entonces, verificar si el elemento objetivo es ventana o documento no funciona. Y envolver toda la página en un div que contiene invisible tampoco funciona: si el div es invisible, entonces el mouse nunca lo superará, por lo que nada cambia.
(Lo mismo sucede si pongo el controlador en document o document.body, excepto que document.body no obtiene los eventos mouseover/mouseout cuando el mouse entra o deja una parte vacía de la ventana, como espacio vertical vacío creado por la colocación de un elemento absolutamente con la parte inferior:.. 0 Para ese espacio, y la ventana de documento obtendrán eventos mouseover/mouseout con el objetivo de ser <html>, pero no lo hará document.body)
Algunas ideas que tenía:
- En cada evento mouseout, obtenga la posición real del mouse y ver si de hecho está sobre la ventana. Pero no sé si esto es realmente posible y parece que sería complicado eliminar todas las condiciones de carrera.
- También registre un manejador de mouseover y detecte los casos en que mouseout no es procesado por (o seguido de a) un mouseover. Pero eso requeriría un temporizador.
Utilizamos prototype.js, así que idealmente me gustaría expresar la solución en términos de Event.observe del prototipo, pero puedo descifrar esa parte.
¡Gracias por cualquier sugerencia!
MooTools ofrece los eventos personalizados MouseEnter/MouseLeave (http://demos.mootools.net/Mouseenter). No conozco Prototype, pero ¿no ofrece algo similar? – Duroth
@Duroth Gracias por el puntero. El prototipo 1.6.1 no parece, pero parece 1.6.2 mayo. – Geoff