Mam nadzieję, że prześledzę pozycję kursora myszy, okresowo co t msekund. Więc zasadniczo, kiedy strona się ładuje - ten tracker powinien się uruchamiać i przez (powiedzmy) co 100 ms powinienem pobrać nową wartość posX i posY i wydrukować ją w formularzu.
Wypróbowałem następujący kod - ale wartości nie są odświeżane - tylko początkowe wartości posX i posY pojawiają się w polach formularza. Jakieś pomysły, jak mogę to uruchomić i uruchomić?
<html>
<head>
<title> Track Mouse </title>
<script type="text/javascript">
function mouse_position()
{
var e = window.event;
var posX = e.clientX;
var posY = e.clientY;
document.Form1.posx.value = posX;
document.Form1.posy.value = posY;
var t = setTimeout(mouse_position,100);
}
</script>
</head>
<body onload="mouse_position()">
<form name="Form1">
POSX: <input type="text" name="posx"><br>
POSY: <input type="text" name="posy"><br>
</form>
</body>
</html>
javascript
Hari
źródło
źródło
event
gdy funkcja zostanie wywołana po raz drugi , nie będzie żadnego obiektu. Prawdopodobnie powinieneś posłuchać jakiegoś zdarzenia niż użyćsetTimeout
.window.event
będzieundefined
lubnull
. Jeśli nie ma zdarzenia, nie maevent
obiektu.Odpowiedzi:
Pozycja myszy jest raportowana na
event
obiekcie odebranym przez moduł obsługimousemove
zdarzenia, który można dołączyć do okna (bąbelki zdarzenia):(Zauważ, że jego treść
if
będzie działać tylko w starym IE).Przykład powyższego w akcji - rysuje kropki podczas przeciągania myszą po stronie. (Testowane na IE8, IE11, Firefox 30, Chrome 38).
Jeśli naprawdę potrzebujesz rozwiązania opartego na zegarze, możesz połączyć to z kilkoma zmiennymi stanu:
O ile mi wiadomo, nie można uzyskać pozycji myszy bez obejrzenia zdarzenia, co wydaje się potwierdzać ta odpowiedź na inne pytanie dotyczące przepełnienia stosu .
Uwaga dodatkowa : jeśli zamierzasz robić coś co 100 ms (10 razy na sekundę), staraj się, aby rzeczywiste przetwarzanie, które wykonujesz w tej funkcji, było bardzo, bardzo ograniczone . To dużo pracy dla przeglądarki, szczególnie starszych Microsoft. Tak, na nowoczesnych komputerach nie wydaje się to dużo, ale w przeglądarkach dużo się dzieje ... Na przykład możesz śledzić ostatnią przetworzoną pozycję i natychmiast zwolnić sprzedawcę, jeśli pozycja nie została t zmienił się.
źródło
Oto rozwiązanie oparte na jQuery i nasłuchiwaniu zdarzeń myszy (które jest znacznie lepsze niż zwykłe odpytywanie) w treści:
źródło
Otwórz konsolę ( Ctrl+ Shift+ J), skopiuj i wklej powyższy kod i przesuń mysz w oknie przeglądarki.
źródło
Uważam, że zbytnio się nad tym zastanawiamy,
źródło
document.body.addEventListener("mousemove", function (e) {})
jest sposób na zrobienie tego w kodzie javascript, a nie w htmlMyślę, że on chce tylko znać pozycje X / Y kursora, niż dlaczego odpowiedź jest tak skomplikowana.
źródło
Kod oparty na ES6:
Jeśli potrzebujesz dławienia do przenoszenia myszy, użyj tego:
oto przykład
źródło
Niezależnie od przeglądarki poniższe wiersze działały za mnie, aby pobrać poprawną pozycję myszy.
event.clientX - event.currentTarget.getBoundingClientRect().left event.clientY - event.currentTarget.getBoundingClientRect().top
źródło
Jeśli chcesz tylko wizualnie śledzić ruch myszy:
źródło
Nie mam wystarczającej reputacji, aby opublikować odpowiedź na komentarz, ale przyjąłem doskonałą odpowiedź TJ Crowdera i w pełni zdefiniowałem kod na zegarze 100 ms . (Kilka szczegółów pozostawił wyobraźni.)
Dzięki OP za pytanie i TJ za odpowiedź! Oboje jesteście wielką pomocą. Kod jest osadzony poniżej jako lustro isbin.
źródło
Oto połączenie tych dwóch wymagań: śledzenie pozycji myszy co 100 milisekund:
To śledzi i działa na pozycji myszy, ale tylko co milisekundy okresu .
źródło
Tylko uproszczona wersja odpowiedzi @TJ Crowder i @RegarBoy .
Moim zdaniem mniej znaczy więcej.
Sprawdź wydarzenie onmousemove, aby uzyskać więcej informacji o wydarzeniu.
Jest nowa wartość
posX
i zaposY
każdym razem, gdy mysz porusza się zgodnie ze współrzędnymi poziomymi i pionowymi.źródło