Gebruik passieve luisteraars om de scrollprestaties te verbeteren

Aanraak- en wielgebeurtenislisteners zijn handig voor het volgen van gebruikersinteracties en het creëren van aangepaste scrollervaringen, maar ze kunnen ook het scrollen van pagina's vertragen. Momenteel kunnen browsers niet weten of een gebeurtenislistener scrollen verhindert, dus wachten ze altijd tot de luisteraar klaar is met uitvoeren voordat ze op de pagina scrollen. Passieve gebeurtenislisteners lossen dit probleem op door u te laten aangeven dat een gebeurtenislistener het scrollen nooit zal voorkomen.

Browsercompatibiliteit

De meeste browsers ondersteunen passieve gebeurtenislisteners. Zie Browsercompatibiliteit

Hoe de passieve gebeurtenislisteneraudit van Lighthouse mislukt

Lighthouse signaleert gebeurtenislisteners die het scrollen van pagina's kunnen vertragen:

Lighthouse-audit laat zien dat de pagina geen passieve gebeurtenislisteners gebruikt om de scrollprestaties te verbeteren

Lighthouse gebruikt het volgende proces om gebeurtenislisteners te identificeren die de scrollprestaties kunnen beïnvloeden:

  1. Verzamel alle gebeurtenislisteners op de pagina.
  2. Filter niet-aanraak- en niet-wiel-luisteraars.
  3. Filter luisteraars uit die preventDefault() aanroepen.
  4. Filter luisteraars uit die van een andere host zijn dan de pagina.

Lighthouse filtert luisteraars van verschillende hosts uit, omdat je waarschijnlijk geen controle hebt over deze scripts. Mogelijk zijn er scripts van derden die de scrollprestaties van uw pagina schaden, maar deze worden niet vermeld in uw Lighthouse-rapport.

Hoe u gebeurtenislisteners passief kunt maken om de scrollprestaties te verbeteren

Voeg een passive vlag toe aan elke gebeurtenislistener die Lighthouse heeft geïdentificeerd.

Als u alleen browsers ondersteunt die passieve gebeurtenislisteners ondersteunen, voegt u gewoon de vlag toe. Bijvoorbeeld:

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

Als u oudere browsers ondersteunt die geen passieve gebeurtenislisteners ondersteunen , moet u functiedetectie of een polyfill gebruiken. Zie de sectie Functiedetectie van het uitlegdocument over WICG Passieve gebeurtenislisteners voor meer informatie.

Bronnen