Web 開発では、マウス位置の追跡は対話型ユーザー インターフェイスを構築するための基本的な手法です。ユーザーは、画像操作、フォーム検証、ゲーム制御などのさまざまな目的でこの機能を利用します。ただし、マウスの位置を一定の間隔で定期的に追跡する必要がある場合があります。
デフォルトでは、Web ページ上でマウスを移動すると、ブラウザは、「mousemove」、「mousedown」、「mouseup」という一連のイベントをトリガーします。歴史的に、プログラマーはマウスの位置を追跡するためにイベント リスナーに依存してきました。特に、「mousemove」イベントはマウスの移動に合わせて継続的に発生するため、任意の瞬間の位置座標をキャプチャできます。ただし、このアプローチには制限があります。位置データは、マウスが実際に移動したときにのみ更新されます。
位置データを一定の間隔で更新する必要がある場合はどうなるでしょうか。マウスが静止しているとき?考えられる解決策は、タイマーを使用することです。イベント リスナーのみに依存する代わりに、マウスの位置をクエリする関数を定期的に呼び出すタイマーを設定できます。このアプローチにより、マウスが動いているかどうかに関係なく、位置の更新を確実に取得できます。
次に、タイマーを使用して定期的なマウス位置追跡を実装する方法を示すコード スニペットを示します。
(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 } } })();
このメソッドには、イベント リスナーとタイマーの両方が必要であることに注意してください。適切に機能します。ベスト プラクティスとして、不必要なリソースの消費を避けるために、プログラムの実行が終了したときにタイマー間隔をクリアします。さらに、特に更新が頻繁に行われる場合は、パフォーマンスへの影響を最小限に抑えるために、タイマー関数内で実行される処理を制限することを忘れないでください。
以上が定期的なマウス位置追跡を JavaScript で実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。