Saya berharap untuk melacak posisi kursor mouse, secara berkala setiap detik. Jadi pada dasarnya, ketika sebuah halaman dimuat - pelacak ini harus dimulai dan untuk (katakanlah) setiap 100 ms, saya harus mendapatkan nilai baru posX dan posY dan mencetaknya dalam formulir.
Saya mencoba kode berikut - tetapi nilainya tidak disegarkan - hanya nilai awal dari posX dan posY yang muncul di kotak formulir. Ada ide tentang bagaimana saya bisa menjalankan dan menjalankan ini?
<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
sumber
sumber
event
objek saat fungsi dipanggil untuk kedua kalinya. Anda mungkin harus mendengarkan acara daripada menggunakansetTimeout
.window.event
akanundefined
ataunull
. Jika tidak ada acara, tidak adaevent
objek.Jawaban:
Posisi mouse dilaporkan pada
event
objek yang diterima oleh pawang untukmousemove
acara tersebut, yang dapat Anda lampirkan ke jendela (gelembung acara):(Perhatikan bahwa tubuh itu
if
hanya akan berjalan di IE lama.)Contoh tindakan di atas - ia menarik titik saat Anda menyeret mouse ke halaman. (Diuji pada IE8, IE11, Firefox 30, Chrome 38.)
Jika Anda benar-benar membutuhkan solusi berbasis waktu, Anda menggabungkan ini dengan beberapa variabel status:
Sejauh yang saya ketahui, Anda tidak bisa mendapatkan posisi mouse tanpa melihat suatu peristiwa, sesuatu yang sepertinya dikonfirmasi oleh jawaban atas pertanyaan Stack Overflow ini .
Catatan : Jika Anda akan melakukan sesuatu setiap 100 ms (10 kali / detik), cobalah untuk menjaga proses aktual yang Anda lakukan dalam fungsi itu sangat, sangat terbatas . Itu banyak pekerjaan untuk browser, terutama yang lebih lama Microsoft. Ya, pada komputer modern sepertinya tidak banyak, tetapi ada banyak hal yang terjadi di browser ... Jadi misalnya, Anda dapat melacak posisi terakhir yang Anda proses dan segera menebus jaminan dari pawang jika posisinya belum t berubah.
sumber
Berikut ini solusinya, berdasarkan jQuery dan pendengar acara mouse (yang jauh lebih baik daripada polling biasa) di badan:
sumber
Buka konsol Anda ( Ctrl+ Shift+ J), salin-tempel kode di atas dan gerakkan mouse Anda di jendela browser.
sumber
Saya percaya bahwa kita terlalu memikirkan ini,
sumber
document.body.addEventListener("mousemove", function (e) {})
adalah cara untuk melakukan ini, dalam kode javascript Anda sebagai lawan dalam htmlApa yang saya pikirkan bahwa dia hanya ingin mengetahui posisi kursor X / Y daripada mengapa jawabannya rumit.
sumber
Kode berbasis ES6:
Jika Anda perlu pelambatan untuk mousemoving, gunakan ini:
di sini adalah contoh
sumber
Terlepas dari peramban, baris di bawah ini berfungsi agar saya mengambil posisi mouse yang benar.
event.clientX - event.currentTarget.getBoundingClientRect().left event.clientY - event.currentTarget.getBoundingClientRect().top
sumber
Jika hanya ingin melacak pergerakan mouse secara visual:
sumber
Saya tidak memiliki reputasi yang cukup untuk mengirim balasan komentar, tetapi mengambil jawaban luar biasa TJ Crowder dan sepenuhnya mendefinisikan kode pada timer 100ms . (Dia meninggalkan beberapa detail pada imajinasi.)
Terima kasih OP untuk pertanyaannya, dan TJ untuk jawabannya! Anda berdua sangat membantu. Kode tertanam di bawah ini sebagai cermin isbin.
sumber
Berikut adalah kombinasi dari dua persyaratan: lacak posisi mouse, setiap 100 milidetik:
Ini melacak & bertindak pada posisi mouse, tetapi hanya setiap periode milidetik.
sumber
Hanya versi sederhana dari jawaban @TJ Crowder dan @RegarBoy .
Kurang lebih menurut saya.
Lihat onmousemove event untuk info lebih lanjut tentang acara tersebut.
Ada nilai baru
posX
danposY
setiap kali mouse bergerak sesuai dengan koordinat horizontal dan vertikal.sumber