• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wartość położenia kursora myszy względem diva - błąd

Object Storage Arubacloud
+1 głos
244 wizyt
pytanie zadane 22 stycznia 2023 w JavaScript przez jasper93 Obywatel (1,310 p.)

Dzień dobry, stworzyłem mały program, który docelowo miałby przemieszczać kwadrat(div), względem wciśnięcia kursora myszy. Chciałem sprawdzić daną wartość dla divX i divY w console.log, program nie działa i otrzymuje dziwny błąd: Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received. Dodatkowo otrzymuje domyślne wartości: 50, 120, które przypisuje na początku programu. Ma ktoś pomysł, dlaczego program wyświetla te same koordynaty i skąd  ten błąd? Link poniżej:

https://jsfiddle.net/cs7yf2jh/

2 odpowiedzi

+1 głos
odpowiedź 22 stycznia 2023 przez Comandeer Guru (601,110 p.)

Błąd, o którym mówisz, wygląda jak błąd z jakiegoś rozszerzenia Chrome i nie dotyczy Twojego kodu.

Co do samego kodu: IMO wystarczy Ci samo e.clientX i e.clientY. W końcu chcesz przesuwać tego diva tam, gdzie jest aktualnie kursor. Niepotrzebne są Ci informacje o tym, gdzie ten kursor jest obecnie od krawędzi tego elementu. Dodatkowo listener dla mousemove lepiej przypiąć do document. Inaczej w chwili, gdy kursor wyjedzie poza div (co właśnie się dzieje przy obecnej wersji), ten przestanie się przesuwać, ale z racji tego, że nie nastąpiło odkliknięcie, całość zacznie się bugować.

komentarz 22 stycznia 2023 przez jasper93 Obywatel (1,310 p.)
Właśnie e.client nie wystarczy, bo chcę by moment kliknięcia i przesunięcia diva wskazywał koordynaty momentu kliknięcia(kursora), a w tym przypadku wskaże lewy góry róg diva :(
komentarz 23 stycznia 2023 przez Comandeer Guru (601,110 p.)

W takim razie pobieraj je w momencie mousedown, zapisuj do zmiennej i wykorzystuj potem do obliczeń przy mousemove.

komentarz 23 stycznia 2023 przez jasper93 Obywatel (1,310 p.)
Teraz działa poprawnie, a dlaczego  w moim przykładzie to nie ma racji bytu? Bo trochę nie rozumiem dlaczego program nie działa skoro przy mousemove odejmuję dane wartości.
komentarz 23 stycznia 2023 przez Comandeer Guru (601,110 p.)

Bo to nie są współrzędne kliknięcia, tylko współrzędne po przesunięciu. Zdarzenie mousemove zachodzi po ruszeniu się kursora myszy, więc offset jest liczony względem tego, gdzie przesunąłem kursor, a nie tam, gdzie kliknąłeś. Dodatkowo zmieniasz go przy każdym ruchu myszką.

0 głosów
odpowiedź 22 stycznia 2023 przez VBService Ekspert (253,340 p.)

Proponuję użyć e.pageX i e.pageY i użyć classList

[ on-line ]

    newDiv.style.left = `${e.pageX - offsetX}px`;
    newDiv.style.top = `${e.pageY - offsetY}px`;

 

Podobne pytania

0 głosów
1 odpowiedź 443 wizyt
pytanie zadane 12 maja 2021 w JavaScript przez poldeeek Mądrala (5,980 p.)
0 głosów
0 odpowiedzi 79 wizyt
pytanie zadane 12 marca 2019 w Sprzęt komputerowy przez serdaw Użytkownik (740 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...