Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Melaksanakan Penjejakan Kedudukan Tetikus Berkala dalam JavaScript?

Bagaimanakah Saya Boleh Melaksanakan Penjejakan Kedudukan Tetikus Berkala dalam JavaScript?

Linda Hamilton
Lepaskan: 2024-11-29 17:27:10
asal
662 orang telah melayarinya

How Can I Implement Periodic Mouse Position Tracking in JavaScript?

Penjejakan Kedudukan Tetikus Berkala dalam Javascript

Dalam pembangunan web, menjejak kedudukan tetikus ialah teknik asas untuk membina antara muka pengguna interaktif. Pengguna bergantung pada fungsi ini untuk pelbagai tujuan, seperti manipulasi imej, pengesahan borang dan kawalan permainan. Walau bagaimanapun, mungkin terdapat keadaan di mana anda perlu menjejaki kedudukan tetikus secara berkala, pada selang masa yang tetap.

Pendekatan Tradisional: Pendengar Acara

Secara lalai, apabila anda menggerakkan tetikus ke atas halaman web, penyemak imbas mencetuskan satu siri acara: 'mouseup,' 'mousedown' dan 'mouseup.' Dari segi sejarah, pengaturcara telah bergantung pada pendengar acara untuk menjejaki kedudukan tetikus. Acara 'mousemove', khususnya, menyala secara berterusan semasa tetikus bergerak, membolehkan anda menangkap koordinat kedudukan pada bila-bila masa. Walau bagaimanapun, pendekatan ini mempunyai had: ia hanya mengemas kini data kedudukan apabila tetikus benar-benar bergerak.

Penyelesaian Berasaskan Pemasa

Bagaimana jika anda memerlukan data kedudukan dikemas kini pada selang masa yang tetap, walaupun apabila tetikus tidak bergerak? Penyelesaian yang mungkin adalah menggunakan pemasa. Daripada bergantung semata-mata pada pendengar acara, anda boleh menyediakan pemasa yang secara berkala menggunakan fungsi untuk menanyakan kedudukan tetikus. Pendekatan ini memastikan anda mendapat kemas kini kedudukan tidak kira sama ada tetikus bergerak atau tidak.

Contoh Pelaksanaan

Berikut ialah coretan kod yang menunjukkan cara melaksanakan penjejakan kedudukan tetikus berkala menggunakan pemasa:

(function() {
  var mousePos;

  document.onmousemove = handleMouseMove;
  setInterval(getMousePosition, 100); // Set the timer to update every 100 milliseconds

  function handleMouseMove(event) {
    event = event || window.event; // IE-ism

    // If pageX/Y aren't available and clientX/Y are, calculate pageX/Y - logic taken from jQuery.
    // (This is to support old IE)
    if (event.pageX == null && event.clientX != null) {
      var eventDoc = (event.target && event.target.ownerDocument) || document;
      var doc = eventDoc.documentElement;
      var body = eventDoc.body;

      event.pageX = event.clientX +
        (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
        (doc && doc.clientLeft || body && body.clientLeft || 0);
      event.pageY = event.clientY +
        (doc && doc.scrollTop || body && body.scrollTop || 0) -
        (doc && doc.clientTop || body && body.clientTop || 0);
    }

    mousePos = {
      x: event.pageX,
      y: event.pageY
    };
  }

  function getMousePosition() {
    var pos = mousePos;
    if (!pos) {
      // We haven't seen any movement yet
    } else {
      // Use pos.x and pos.y
    }
  }
})();
Salin selepas log masuk

Pertimbangan

Perhatikan bahawa kaedah ini memerlukan kedua-dua pendengar acara dan pemasa untuk berfungsi dengan baik. Sebagai amalan terbaik, kosongkan selang pemasa apabila program selesai pelaksanaan untuk mengelakkan penggunaan sumber yang tidak perlu. Selain itu, ingat untuk mengehadkan pemprosesan yang dilakukan dalam fungsi pemasa untuk meminimumkan kesan prestasi, terutamanya jika kemas kini adalah kerap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Penjejakan Kedudukan Tetikus Berkala dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan