تُعد أدوات معالجة أحداث اللمس والعجلة مفيدة لتتبع تفاعلات المستخدم وإنشاء تجارب تمرير مخصصة، ولكنها يمكنها أيضًا تأخير تمرير الصفحة. في الوقت الحالي، لا يمكن للمتصفِّحات معرفة ما إذا كانت أداة معالجة الحدث ستمنع التمرير، لذا تنتظر دائمًا إلى أن ينتهي تنفيذ المستمع قبل الانتقال في الصفحة. تحل أدوات معالجة الأحداث السلبية هذه المشكلة من خلال السماح لك بالإشارة إلى أن أداة معالجة الحدث لن تمنع التمرير أبدًا.
توافُق المتصفح
توفِّر معظم المتصفِّحات أدوات معالجة الأحداث السلبية. يُرجى الاطّلاع على توافق المتصفّح.
كيفية تعذُّر تدقيق أداة معالجة الأحداث السلبية في Lighthouse
تضع خدمة Lighthouse علامة عن مستمعي الأحداث، ما قد يؤخّر الانتقال في الصفحة:
![يشير تدقيق أداة Lighthouse إلى أنّ الصفحة لا تستخدم أدوات معالجة الأحداث السلبية لتحسين عملية التنقّل.](https://developer.chrome.com/static/docs/lighthouse/best-practices/uses-passive-event-listeners/image/lighthouse-audit-shows-pa-710b643918a3.png?authuser=6&hl=ar)
تستخدم أداة Lighthouse العملية التالية لتحديد أدوات معالجة الأحداث التي قد تؤثر في أداء التنقّل بين الأجهزة:
- جمع كل أدوات معالجة الأحداث في الصفحة
- فلترة أجهزة المستمعين التي لا تعمل باللمس أو غير المزوّدة بعجلات
- استبعاد المستمعين الذين يتصلون بـ "
preventDefault()
" - يمكنك فلترة المستمعين من مضيف مختلف عن الصفحة.
يفلتر Lighthouse المستمعين من مضيفين مختلفين لأنك ربما لا تتحكم في هذه النصوص البرمجية. قد تكون هناك نصوص برمجية تابعة لجهات خارجية تؤثر سلبًا في أداء التنقل في صفحتك، ولكن لا يتم إدراجها في تقرير Lighthouse.
طريقة جعل أدوات معالجة الأحداث سلبية لتحسين أداء التمرير
يمكنك إضافة علامة passive
إلى كل أداة معالجة حدث رصدتها أداة Lighthouse.
إذا كنت تستخدم فقط المتصفحات التي تتيح استخدام أداة معالجة الأحداث بشكل سلبي، ما عليك سوى إضافة العلامة. مثلاً:
document.addEventListener('touchstart', onTouchStart, {passive: true});
إذا كنت تستخدم المتصفّحات القديمة التي لا تتيح أدوات معالجة الأحداث السلبية، ستحتاج إلى استخدام رصد الميزات أو رمز polyfill. للحصول على مزيد من المعلومات، يمكنك الاطّلاع على قسم اكتشاف الميزات في المستند التوضيحي حول أدوات معالجة الأحداث السلبية في WICG.