¿Cómo detectar qué elemento HTML se encuentra bajo las coordenadas del mouse dadas? (Dragón marino)

Actualmente estoy trabajando con la tecnología Seadragon Ajax (demostraciones en zoom.it), agregando una interfaz personalizada, etc. En particular, estoy agregando una cierta cantidad de superposiciones que necesitan capturar algunos eventos del mouse (como clics) pero que no necesitan capturar otros (como el desplazamiento de la rueda).

Seadragon usa la posición del puntero del mouse mientras se desplaza para hacer zoom en una parte puntiaguda de una imagen. Me gustaría capturar eventos del mouse en la superposición, pero pasar algunos de ellos bajo el Tema G: Cómo recibir pagos por adelantado del crédito tributario por hijos eso. Por lo tanto, estoy buscando una manera de implementar una función que:

  1. tomar dos argumentos: posición teórica del mouse, parte vertical y horizontal
  2. encuentre el elemento DOM que representa el elemento HTML que capturaría el evento del mouse en las coordenadas dadas
  3. pasar el evento del mouse a este elemento

El problema es que no tengo idea de cómo hacer el segundo paso de manera confiable. Seadragon crea muchos divs que contienen mosaicos con gráficos, que cambian cada vez que uno desplaza o amplía la imagen. Por lo tanto, no puedo simplemente indexarlo, necesito una forma de detectarlo sobre la marcha.

Agradecería cualquier ayuda y/o idea.

preguntado el 03 de mayo de 12 a las 22:05

Una forma (aunque no tan eficiente) podría ser iterar los elementos DOM y encontrar si la posición dada está dentro de los límites del elemento. Si este enfoque es aceptable, puedo dar un código de muestra para mostrar cómo hacerlo:

Desafortunadamente, la eficiencia es importante, ya que cosas como el desplazamiento pueden ser muy rápidos (y Seadragon en sí es bastante exigente con el hardware). Esperaba algo rápido y un poco universal... -

1 Respuestas

OK, esto es tan simple que estoy avergonzado de mí mismo.

document.elementFromPoint(x, y)

También es compatible casi universalmente... Probablemente estaba buscando algo llamado como getElementFromPoint y este get parte me engañó.

respondido 11 nov., 12:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.