JavaScript Tutorials

إتقان تتبع مؤشر الفأرة في جافاسكريبت

Spread the love

يُعدّ تتبُّع دقيق لحركات الماوس أمرًا بالغ الأهمية لإنشاء تجارب تفاعلية وجذابة على الويب. يستعرض هذا الدليل الطرق المختلفة التي توفرها جافا سكريبت لتحقيق ذلك، مع التركيز على التقنيات العملية وأفضل الممارسات.

محتويات

فهم أحداث الماوس في جافا سكريبت

توفر جافا سكريبت مجموعة غنية من أحداث الماوس لالتقاط تفاعلات المستخدم. لتتبع موضع الماوس، يُعدّ حدث mousemove أساسيًا. يتم تشغيل هذا الحدث بشكل متكرر مع تحريك الماوس، مما يوفر تحديثات مستمرة لموقع المؤشر. تقدم أحداث أخرى، مثل mouseover، mouseout، mousedown، و mouseup، سياقًا قيّمًا ولكنها لا تُستخدم مباشرةً لتتبع المواضع المستمر.

يتم إرفاق هذه الأحداث بعناصر HTML باستخدام طريقة addEventListener. على سبيل المثال:


const myElement = document.getElementById('myElement');
myElement.addEventListener('mousemove', handleMouseMove);

function handleMouseMove(event) {
  // معالجة إحداثيات الماوس هنا
}

استخدام pageX/pageY و clientX/clientY

يوفر الكائن المرتبط بحدث mousemove خصائص مهمة للحصول على إحداثيات الماوس:

  • pageX و pageY: يعطيان الإحداثيات الأفقية والرأسية بالنسبة للمستند بأكمله، بما في ذلك التمرير. إنها متسقة بغض النظر عن تعشيش العنصر.
  • clientX و clientY: يوفران الإحداثيات بالنسبة لمنطقة عرض نافذة المتصفح، مع مراعاة التمرير أيضًا.

إليك كيفية استخدامها:


function handleMouseMove(event) {
  const pageX = event.pageX;
  const pageY = event.pageY;
  const clientX = event.clientX;
  const clientY = event.clientY;

  console.log(`إحداثيات الصفحة: (${pageX}, ${pageY})`);
  console.log(`إحداثيات العميل: (${clientX}, ${clientY})`);

  // تحديث عناصر واجهة المستخدم بالإحداثيات
  document.getElementById('coordinates').textContent = `X: ${pageX}, Y: ${pageY}`;
}

تذكر تضمين عنصر برقم تعريف myElement و coordinates في HTML الخاص بك:


<div id="myElement" style="width: 500px; height: 300px; background-color: lightgray;">حرّك مؤشر الماوس فوقي!</div>
<div id="coordinates"></div>

مراعاة التمرير

تتعامل pageX و pageY بشكلٍ جوهري مع التمرير. إذا قام المستخدم بتمرير الصفحة، فستُعدّل الإحداثيات وفقًا لذلك، مع مراعاة موضع الماوس دائمًا بالنسبة للمستند بأكمله. ومع ذلك، تظل clientX و clientY نسبيتين لمنطقة العرض.

ما هو أبعد من الأساسيات: تقنيات متقدمة

بالنسبة للسيناريوهات الأكثر تعقيدًا، ضع في اعتبارك هذه التقنيات المتقدمة:

  • إزالة الارتداد/التقليل: لتحسين الأداء للتطبيقات التي تحتوي على أحداث mousemove متكررة جدًا، استخدم إزالة الارتداد أو التقليل للحد من معدل تنفيذ مُعالِج الحدث.
  • التحديد النسبي: للتفاعلات داخل عنصر محدد، احسب الإحداثيات النسبية داخل حدود ذلك العنصر.
  • أحداث اللمس: للأجهزة التي تدعم اللمس، استخدم أحداث اللمس (touchstart، touchmove، touchend) بدلاً من أحداث الماوس.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *