Detektory zdarzeń dotyku i kółka przydają się do śledzenia interakcji użytkowników i tworzenia niestandardowych działań związanych z przewijaniem, ale mogą też opóźniać przewijanie strony. Obecnie przeglądarki nie wiedzą, czy detektor zdarzeń zablokuje przewijanie, więc zawsze czekają na zakończenie działania detektora, zanim przewiną stronę. Pasywne detektory zdarzeń rozwiązują ten problem, umożliwiając wskazanie, że detektor zdarzeń nigdy nie zapobiega przewijaniu.
Zgodność z przeglądarką
Większość przeglądarek obsługuje pasywne detektory zdarzeń. Patrz Zgodność z przeglądarką
Co się dzieje, gdy kontrola pasywnego detektora zdarzeń w Lighthouse kończy się niepowodzeniem
Lighthouse oznacza detektory zdarzeń, które mogą opóźniać przewijanie strony:
Lighthouse korzysta z poniższego procesu do identyfikowania detektorów zdarzeń, które mogą wpływać na wydajność przewijania:
- Zbierz wszystkie detektory zdarzeń na stronie.
- Odfiltrowuj słuchaczy niedotykowych i niezależnych.
- Odfiltruj detektory, które wywołują metodę
preventDefault()
. - Odfiltruj detektory, które pochodzą z innego hosta niż strona.
Lighthouse odfiltrowuje detektory z różnych hostów, ponieważ prawdopodobnie nie masz kontroli nad tymi skryptami. Mogą występować skrypty zewnętrzne, które pogarszają szybkość przewijania strony, ale nie są one wymienione w raporcie Lighthouse.
Jak ustawić detektory zdarzeń jako pasywne, aby poprawić działanie przewijania
Dodaj flagę passive
do każdego detektora zdarzeń zidentyfikowanego przez Lighthouse.
Jeśli używasz tylko przeglądarek, które obsługują pasywny detektor zdarzeń, dodaj odpowiednią flagę. Na przykład:
document.addEventListener('touchstart', onTouchStart, {passive: true});
Jeśli masz starsze przeglądarki, które nie obsługują pasywnych detektorów zdarzeń, musisz użyć wykrywania funkcji lub kodu polyfill. Więcej informacji znajdziesz w sekcji Wykrywanie funkcji w dokumencie z objaśnieniem pasywnych detektorów zdarzeń WICG.