2011-07-05 12 views
13

¿Cómo obtener las coordenadas del cursor del mouse en la biblioteca raphaeljs?Obtener las coordenadas del cursor en raphael

estoy intentando algo como:

rect.mousemove(function (event) { 
     thisGrid.Popup.Show(event.layerX, event.layerY, ["clientX:", event.clientX, " clientY:", event.clientY, "\n", "layerX:", event.layerX, "layerY:", event.layerY, "\n", 
      "pageX:", event.pageX, "pageY:", event.pageY].join(' ')); 

         } 
        ); 

Pero todos los anuncios del retorno coordenadas relativas esquina superior izquierda de la ventana o algo así.

Aquí es pantalla

enter image description here

Respuesta

12

Yo también tuve este problema hace un tiempo. Debe tener en cuenta el div actual. En mi caso, el div se llamaba lienzo. Para las coordenadas he utilizado la siguiente:

posx = e.pageX - $(document).scrollLeft() - $('#canvas').offset().left; 
posy = e.pageY - $(document).scrollTop() - $('#canvas').offset().top; 

Nota: También estaba usando jQuery también ahí el uso de $. Puede usar document.getElementById si prefiere no usar jQuery.

+4

sería súper agradable si Raphael acaba de calcular estos puntos (es decir, relativos a las coordenadas de Raphael.paper) y los agregó al objeto del evento. –

-1

de cómputo con la posición del elemento de origen del evento (event.srcElement)

+0

Pero el evento no contiene la propiedad srcElement. El evento tiene originalTarget CurrentTarget y algo así. No sé cómo obtener las coordenadas de los objetivos. Creo que debería ser una manera fácil de hacer eso. – Neir0

+0

srcElement es una propiedad js nativa del objeto de evento. Encuentre el equivalente en jquery – hungryMind

+1

pero no es jquery. – Neir0

9

Si quieres coordenadas relativas a su div, trate de usar event.offsetX/offsetY

+0

Esto funcionó para mí, mientras que la respuesta aceptada (y varias variaciones) no. Event.offsetX está exactamente en el sistema de coordenadas que Raphael está usando para dibujar. (Mi altura y ancho de div coinciden con mi ancho y alto de inicio de Raphael; no he probado si eso es parte de por qué funciona.) – Matt

+0

No funciona para mí. – Armand

+1

En el evento de firefox no tiene offsetX, offsetY, pero tiene layerX y layerY – blazkovicz

Cuestiones relacionadas