2011-09-06 16 views
5

Tengo el elegante mouse de Apple que detecta movimientos de los dedos como "deslizar" y "desplazarse".mouseover/mouseenter no activado al desplazarse

Dejando el cursor fijo en la pantalla, pero usando el dedo para desplazarse hacia abajo en mi página, el cursor (aunque fijo) se mueve naturalmente sobre diferentes elementos, porque los elementos se están moviendo ellos mismos.

Mi problema es que al hacer eso, las devoluciones de llamada mouseover/mouseenter apropiadas no se llaman cuando el cursor del mouse está directamente encima de ellas.

¿Cómo puedo resolver este problema?

+1

Posible duplicado de http://stackoverflow.com/q/3341183/901048 – Blazemonger

Respuesta

3

La mayoría de los navegadores que he usado no activan los eventos del mouse cuando la página se desplaza. Puede intentar escuchar el evento onscroll y usar document.elementFromPoint para determinar qué elemento se ha movido debajo del cursor del mouse cuando se desencadena el evento onscroll.

+0

¡Firefox activa el evento! Pero no Chrome ... – Randomblue

+2

@Randomblue a partir de octubre de 2015, esa es la convención entre la mayoría de los proveedores de navegadores, con el fin de optimizar para obtener un mejor rendimiento de desplazamiento. – pilau

+0

Pero, ¿cómo obtenemos las coordenadas del cursor del mouse para elementFromPoint si los eventos del mouse no se disparan? La respuesta no está completa. – Matthew

0

No creo que pueda ... salvo tener una función que funcione con un temporizador para verificar la posición del mouse contra los elementos, pero el rendimiento alcanzado sería astronómico por decir lo menos. Probablemente debería presentar un informe de error con el fabricante del navegador y comprobar otros navegadores para ver si el comportamiento se repite. Supongo que lo hará porque no creo que ningún navegador active un mouseover/mouseenter si el mouse no se movió físicamente.

1

El método mousemove de Jquery es una buena solución aquí ya que se activa cuando el mouse se desplaza hacia un elemento mientras se desplaza, incluso mientras el mouse se ha mantenido estático.

Puede incluso trigger el evento del mouseenter en el mousemove, siempre que incluya algún tipo de indicador/estado para asegurarse de que el código del mouseenter no se ejecute repetidamente en mousemove.

Cuestiones relacionadas