2011-07-05 16 views
13

Jak uzyskać współrzędne kursora myszy w bibliotece raphaeljs?Pobierz współrzędne kursora w raphael

Próbuję coś takiego:

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(' ')); 

         } 
        ); 

Ale wszystkie ogłoszenia powrócić współrzędne względne lewym górnym rogu okna, czy coś.

Oto zrzut ekranu

enter image description here

Odpowiedz

12

Ja też miałem ten problem jakiś czas temu. Musisz wziąć pod uwagę obecny div. W moim przypadku div został nazwany płótnem. Dla współrzędnych użyłem następujące:

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

Uwaga: Byłem też przy użyciu jQuery zbyt stąd użycie $. Możesz użyć document.getElementById, jeśli wolisz nie używać jQuery.

+4

byłoby super miło, gdyby Raphael właśnie obliczył te punkty (tj. Względem współrzędnych Raphael.paper) i dodał je do obiektu zdarzenia. –

-1

obliczyć z położenia elementu źródłowego wydarzenie (event.srcElement)

+0

Ale zdarzenie nie zawiera właściwości srcElement. Wydarzenie ma originalTarget CurrentTarget i coś. Nie wiem, jak uzyskać współrzędne celu. Myślę, że powinien być łatwy sposób na zrobienie tego. – Neir0

+0

srcElement jest natywną właściwością js obiektu zdarzenia. Znajdź odpowiednik w jquery – hungryMind

+1

, ale to nie jquery. – Neir0

9

Jeśli chcesz współrzędnych względem swojej div, spróbuj użyć event.offsetX/offsetY

+0

To działało dla mnie, podczas gdy zaakceptowana odpowiedź (i kilka odmian) nie. Event.offsetX jest dokładnie w układzie współrzędnych, którego Raphael używa do rysowania. (Moja wysokość i szerokość div pasują do mojej wysokości i szerokości init Raphaela - nie sprawdziłem, czy to jest część tego, dlaczego to działa). – Matt

+0

Nie działa dla mnie. – Armand

+1

W zdarzeniu firefox nie ma offsetX, offsetY, ale ma layerX i layerY – blazkovicz

Powiązane problemy