Todos os artigos deste blog têm uma pequena figura do Mr. Grummel sentada na margem. Faz scroll de forma constante e ele vai acenando com a cabeça. Para de fazer scroll durante meio minuto e ele adormece, com letras de ressonar a subir ao lado dele. Faz scroll suficientemente depressa, durante tempo suficiente, e ele deixa de acenar e passa a parecer irritado. Nada disto é decoração acrescentada depois — é um único listener de scroll a fazer aritmética com a tua posição de scroll e o relógio, e a mapear quatro resultados simples numa classe de humor.
Os únicos dois números que ele realmente tem
Cada evento de scroll entrega ao listener duas coisas: quanto a página se moveu desde o último evento, e quanto tempo passou. Divide uma pela outra e obténs uma velocidade, em pixels por segundo. É esse o sensor inteiro. Ele não sabe onde estão os teus olhos, se estás neste parágrafo ou três à frente, nem sequer se estás a ler ou apenas a manter a página parada enquanto pensas noutra coisa — só sabe a que velocidade o documento se deslocou sob uma janela de visualização fixa, o que é um indicador indireto de atenção e nada mais.
Desse único número resultam três comportamentos. Faz scroll normalmente e ele acena por um instante depois de cada evento, voltando à quietude ao fim de nove décimos de segundo sem mais scroll — o suficiente para parecer que está "a acompanhar" sem tremer a cada pixel. Para completamente de fazer scroll e, ao fim de trinta segundos de silêncio, ele adormece; volta a fazer scroll e ele acorda sobressaltado, com o humor a mudar brevemente para surpreendido antes de estabilizar de novo na sua carranca habitual. Leva a velocidade a passar de cerca de 1500 pixels por segundo e mantém-na assim por mais de meio segundo, e ele interpreta isso como passar os olhos em vez de ler — o acenar para, ele fica irritado, e esse veredicto mantém-se por dois segundos e meio antes de estar disposto a reconsiderar, para que um único gesto de scroll nervoso não o faça oscilar a cada frame.
A única recompensa construída sobre isto
Há uma segunda peça, mais simples, montada sobre o mesmo elemento: um intersection observer a vigiar o apelo à ação (call-to-action) final do artigo, aquele mesmo por baixo do último parágrafo. No momento em que quarenta por cento desse bloco entra em vista, pela primeira vez, ele dá um pequeno gesto de aprovação — não exatamente por teres terminado o artigo, já que o sensor não consegue confirmar isso, mas por a página ter avançado o suficiente para que o final esteja agora visível. É um indicador indireto a substituir outro indicador indireto, e achamos que essa é uma forma honesta de o descrever, e não uma crítica.
Do que ainda não temos a certeza
A velocidade de scroll é, sinceramente, um sinal fraco para distinguir "passar os olhos" de "ler". Alguém a deslizar um trackpad por hábito enquanto pensa a sério sobre o parágrafo anterior será assinalado exatamente da mesma forma que alguém que está mesmo só a passar os olhos, e não há forma de um sensor baseado apenas em velocidade distinguir as duas coisas. Construímos isto como um pequeno traço de personalidade honesto, não como uma métrica de envolvimento em que alguém devesse confiar — se esta página alguma vez começasse a tomar decisões com base no que o companheiro de leitura "acha" que um visitante fez, isso seria uma afirmação muito maior do que aquilo que o sensor consegue realmente sustentar.
Nada disto é currículo — é uma nota sobre como esta página do blog foi construída, não algo sobre o qual a app faça perguntas. Se distância ao longo do tempo e event listeners são o tipo de coisa sobre a qual preferirias ser testado em vez de apenas ler, a disciplina de Informática da app cobre os blocos de construção mais simples por trás disto, a começar por Programação.