Trình nghe sự kiện chạm và di chuyển con lăn rất hữu ích để theo dõi tương tác của người dùng và tạo trải nghiệm cuộn tuỳ chỉnh, nhưng cũng có thể trì hoãn việc cuộn trang. Hiện tại, trình duyệt không thể biết liệu trình nghe sự kiện có ngăn thao tác cuộn hay không, vì vậy, trình duyệt luôn đợi trình nghe hoàn tất quá trình thực thi trước khi cuộn trang. Trình nghe sự kiện thụ động giải quyết vấn đề này bằng cách cho phép bạn cho biết rằng trình nghe sự kiện sẽ không bao giờ ngăn việc cuộn.
Khả năng tương thích với trình duyệt
Hầu hết các trình duyệt đều hỗ trợ trình nghe sự kiện thụ động. Xem phần Khả năng tương thích với trình duyệt
Cách kiểm tra trình nghe sự kiện thụ động của Lighthouse không thành công
Lighthouse gắn cờ trình nghe sự kiện có thể trì hoãn việc cuộn trang:

Lighthouse sử dụng quy trình sau đây để xác định trình nghe sự kiện có thể ảnh hưởng đến hiệu suất cuộn:
- Thu thập tất cả trình nghe sự kiện trên trang.
- Lọc bỏ trình nghe không phải cảm ứng và không phải bánh xe.
- Lọc ra những trình nghe gọi
preventDefault()
. - Lọc ra những trình nghe đến từ một máy chủ khác với trang.
Lighthouse lọc ra trình nghe từ nhiều máy chủ lưu trữ khác nhau vì có thể bạn không kiểm soát được các tập lệnh này. Có thể có các tập lệnh của bên thứ ba đang làm hại hiệu suất cuộn của trang, nhưng các tập lệnh này không được liệt kê trong báo cáo Lighthouse.
Cách làm cho trình nghe sự kiện trở thành thụ động để cải thiện hiệu suất cuộn
Thêm cờ passive
vào mọi trình nghe sự kiện mà Lighthouse đã xác định.
Nếu bạn chỉ hỗ trợ các trình duyệt có hỗ trợ trình nghe sự kiện thụ động, bạn chỉ cần thêm cờ. Ví dụ:
document.addEventListener('touchstart', onTouchStart, {passive: true});
Nếu bạn đang hỗ trợ các trình duyệt cũ không hỗ trợ trình nghe sự kiện thụ động, bạn sẽ cần dùng tính năng phát hiện tính năng hoặc polyfill. Xem Phát hiện tính năng trong phần Trình nghe sự kiện thụ động của WICG để biết thêm thông tin.