שימוש ברכיבי listener פסיביים לשיפור ביצועי הגלילה

מאזינים לאירועי מגע וגלגלת שימושיים למעקב אחרי אינטראקציות של משתמשים וליצירת חוויות גלילה בהתאמה אישית, אבל הם גם עלולים לעכב את הגלילה בדף. בשלב הזה, הדפדפנים לא יכולים לדעת אם מאזין לאירועים ימנע גלילה, ולכן הם תמיד מחכים עד שמאזין האירועים יסיים את ההפעלה לפני שהם גוללים את הדף. פונקציות event listener פסיביות פותרות את הבעיה הזו בכך שהן מאפשרות לציין שפונקציית event listener לעולם לא תמנע גלילה.

תאימות דפדפן

רוב הדפדפנים תומכים בפונקציות event listener פסיביות. תאימות לדפדפנים

איך נכשלת הביקורת של Lighthouse על פונקציית event listener פסיבית

Lighthouse מסמן פונקציות event listener שעלולות לעכב את הגלילה בדף:

ביקורת Lighthouse מראה שהדף לא משתמש ברכיבי listener פסיביים לשיפור ביצועי הגלילה

כדי לזהות רכיבי listener לאירועים שעשויים להשפיע על ביצועי הגלילה, Lighthouse משתמש בתהליך הבא:

  1. איסוף כל פונקציות ה-event listener בדף.
  2. סינון של מאזינים שאינם משתמשים במגע או בגלגל.
  3. סינון של מאזינים שמתקשרים אל preventDefault().
  4. סינון מאזינים ששייכים למארח אחר מהדף.

מערכת Lighthouse מסננת מאזינים ממארחים שונים כי סביר להניח שאין לכם שליטה בסקריפטים האלה. יכול להיות שיש סקריפטים של צד שלישי שפוגעים בביצועים של הגלילה בדף, אבל הם לא מופיעים בדוח Lighthouse.

איך הופכים את הפונקציות event listener לפסיביות כדי לשפר את ביצועי הגלילה

מוסיפים דגל passive לכל מאזין אירועים שזוהה על ידי Lighthouse.

אם אתם תומכים רק בדפדפנים עם תמיכה בפונקציות event listener פסיביות, פשוט מוסיפים את הדגל. לדוגמה:

document.addEventListener('touchstart', onTouchStart, {passive: true});

אם אתם תומכים בדפדפנים ישנים שלא תומכים בפונקציות event listener פסיביות, תצטרכו להשתמש בזיהוי תכונות או ב-polyfill. מידע נוסף זמין בקטע זיהוי תכונות במסמך ההסבר של WICG בנושא פונקציות event listener פסיביות.

משאבים