Jeszcze jedno pytanie, które wyśmiewa mnie w ciągu ostatnich kilku dni. Jak mogłeś zauważyć na innych moich pytaniach, tworzę oprogramowanie do map myśli. Tak (bardzo uproszczony) Mam dwa divy. Jeden, który jest kwadratem na stronie, a drugi wewnątrz div, który jest około 10 razy większy i łatwiejszy do przeciągnięcia. Jest tak, że obiekty mogą być umieszczane na ekranie, a następnie przesuwane lekko na bok podczas dodawania innego obiektu itp. Robię to, tworząc przewijany zewnętrzny div.Zdobądź pozycję myszy w przewijanym dziale
Problemy, które mam, mają związek z pozycją myszy w skrypcie java. Jeśli zdobędę pozycję myszy w dowolnym miejscu w div, to nie będzie ona poprawna, ponieważ przesunę wewnętrzną część div o połowę jej rozmiaru do góry i lewej (tak skutecznie użytkownik patrzy na środek płótna i może pójść w dowolny sposób) . Wypróbowałem dziesiątki różnych funkcji współrzędnych myszy, ale żadna z nich nie działa. Przykładem, który ma być przeglądarką, którą znalazłem gdzieś w Internecie, jest:
function getMouse(e) {
var posx;
var posy;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
}
else if (e.clientX || e.clientY) {
posx = e.clientX + document.body.scrollLeft + document.getElementById("canvas").scrollLeft;
posy = e.clientY + document.body.scrollTop + document.getElementById("canvas").scrollTop;
}
} //getMouse
Ale nawet to nie działa. Jestem prawie pewien, że ten błąd jest spowodowany tym, że wewnętrzny div jest przeciągalny. Mam nadzieję, że w pewnym sensie próbowałem wyjaśnić, ale jeśli nie mam here is a very simple jsfiddle w próbie zademonstrowania sytuacji, którą mam (chociaż tutaj nie robi się tu kliknięcia myszką, tylko po to, żeby zademonstrować moją strukturę div). W produkcie, który robię, użytkownik dwukrotnie kliknie na płótnie i pojawi się nowy obiekt, a więc dlaczego współrzędne myszy muszą być poprawne.
Mam nadzieję, że ktoś tam może mi pomóc.
Z góry dziękuję.
EDIT: Nie można wspomnieć, że przez część mojej aplikacji używam JQuery więc rozwiązanie z lub bez JQuery będzie dobrze. Dzięki jeszcze raz.
Zauważyłem, że Fiddle jest za pomocą jQuery. Ponieważ nie wspomniałeś o tym tutaj, będziesz używał jQuery jako części swojego rozwiązania? Jakich oczekujesz od współrzędnych myszy względem płótna lub dokumentu? – Nimrod
Dobrze, jeśli można to zrobić łatwiej w JQuery, to jest ok ... Albo rozwiązanie jest w porządku ... Ale zaktualizuję post. Potrzebuję pozycji względem wewnętrznego div, tj. # Canvas w jsfiddle. Dzięki. –