Chrome Dev Summit 2018 is happening now and streaming live on YouTube. Watch now.

Site usa detectores de evento passivos para melhorar o desempenho de rolagem

Por que a auditoria é importante

Definir a opção passive nos seus detectores de eventos touch e wheel pode melhorar o desempenho de rolagem.

Consulte Melhorar desempenho de rolagem com detectores de evento passivos para obter uma visão geral.

Consulte o Explainer na especificação do detector de evento para obter detalhes técnicos.

Como ser aprovado na auditoria

Adicione o sinalizador passive a todos os detectores de evento que o Lighthouse identificar. Em geral, você deve adicionar o sinalizador passive a todos os detectores de evento wheel, mousewheel, touchstart, e touchmove que não chamarem preventDefault().

Em navegadores compatíveis com detectores de evento passivos, marcar um detector como passive é tão simples como definir um sinalizador:

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

Entretanto, em navegadores incompatíveis com detectores de evento passivos, o terceiro parâmetro é um booleano para indicar se o evento deve surgir ou capturar. Portanto, a sintaxe acima pode causar consequências inesperadas.

Consulte o polyfill em Detecção de recursos para saber como implementar detectores de evento passivos com segurança.

Como a auditoria é implementada

Esta seção explica como esta auditoria é implementada para que você possa compreender como a pontuação da auditoria é calculada.

O Lighthouse usa o seguinte algoritmo para sinalizar candidatos em potencial para detectores de evento passivos:

  1. Coletar todos os detectores de evento na página.
  2. Remover dos filtros detectores non-touch e non-wheel.
  3. Remover dos filtros detectores que chamem preventDefault().
  4. Remover dos filtros detectores originados de um host diferente do da página.

O Lighthouse remove dos filtros detectores de hosts diferentes porque você provavelmente não tem controle sobre esses scripts. Por causa disso, observe que a auditoria do Lighthouse não representa o desempenho de rolagem integral da sua página. Pode haver scripts de terceiros que prejudiquem o desempenho de rolagem da página, mas eles não são listados no relatório do Lighthouse.