Trình nghe sự kiện chạm và con lăn rất hữu ích để theo dõi hoạt động 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ờ cá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 ra 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 trình nghe 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 đặt trình nghe sự kiện ở chế độ 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 đ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 sử dụng tính năng phát hiện tính năng hoặc polyfill. Hãy xem phần Phát hiện tính năng trong tài liệu giải thích về Trình nghe sự kiện thụ động của WICG để biết thêm thông tin.