SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
17.04.2025

Rolando para o Topo ao Atualizar a Página em HTML: Uma Solução em JavaScript

Resposta Rápida

A função JavaScript window.scrollTo() permite que você retorne a visão ao topo da página quando ela é atualizada:

window.onbeforeunload = function() { window.scrollTo(0, 0); };

Esse código utiliza o evento onbeforeunload para reiniciar a posição de rolagem antes que a página seja fechada ou atualizada.

Gerenciando a Restauração Automática da Rolagem pelo Navegador

O histórico do navegador pode, às vezes, alterar a posição de rolagem na página. Para neutralizar esse comportamento, defina o atributo history.scrollRestoration como "manual":

if ('scrollRestoration' in history) { 
  history.scrollRestoration = 'manual';
}

Dessa forma, você ganha controle total sobre a rolagem ao navegar pelo histórico do navegador, desabilitando a gestão automática de rolagem.

Gerenciamento da Rolagem da Página Usando jQuery

Para usuários de jQuery, a seguinte abordagem pode ser recomendada: vincule a função scrollTop(0) ao evento $(window).on('beforeunload'):

$(window).on('beforeunload', function() {
  $(window).scrollTop(0);
});

O código descrito aqui garante um retorno ao topo da página antes de ser fechada, utilizando o método scrollTop da biblioteca jQuery.

Usando Corretamente o Evento onbeforeunload

Para evitar erros, é importante gerenciar corretamente o evento window.onbeforeunload:

window.onbeforeunload = function() { 
  window.scrollTo(0, 0);
};

Você deve evitar chamar a função setTimeout, pois isso pode levar a resultados imprevisíveis. O evento onbeforeunload é acionado sem atraso.

Visualização

Pense na rolagem da página como uma montanha-russa 🎢, que começa sua trajetória novamente após cada atualização da página:

Ao Atualizar: 🔄
Posição Atual: 🎢🔝
Posição Desejada: 🎢🎠 (nível do chão)

O objetivo dessa solução é garantir que a página (ou a montanha-russa) comece a rolar a partir do ponto inicial a cada atualização.

<body onload="window.scrollTo(0,0);">
    <!-- Conteúdo da página -->
</body>

Assim, cada carregamento da página (subida da montanha-russa) começa novamente (do topo da página).

Suportando Posição de Rolagem Estável em Páginas com Conteúdo Dinâmico

AJAX e aplicações de página única (SPA) podem causar alterações na posição de rolagem devido a mudanças de conteúdo dinâmico. Sempre certifique-se de retornar ao topo da página após cada atualização. Nesse caso, é necessário chamar window.scrollTo(0,0) após novos elementos serem adicionados à página.

Lidando com Mudanças na Posição de Rolagem ao Carregar Conteúdo de Mídia

Páginas com muito conteúdo de mídia podem mudar as posições de rolagem. Retornar ao topo da página após carregar todos os elementos é sua tarefa. Utilize rastreamento de eventos para eventos de carregamento de página ou eventos de carregamento de imagens individuais.

Compatibilidade entre Navegadores — Testado!

Diferentes navegadores tratam o evento onbeforeunload de formas distintas. Não se esqueça de testar seu código em vários navegadores e usar técnicas de detecção de recursos e polyfills para criar uma solução compatível com diferentes navegadores.

Recursos Úteis

  1. Método Window: scrollTo() - Web APIs | MDN — Descrição detalhada do método scrollTo em JavaScript.
  2. Rolagem Suave | CSS-Tricks — Implementação de rolagem suave usando CSS.
  3. Método Window scrollTo() | W3Schools — Informação sobre scrollTo do W3Schools.
  4. Guia para Usar Ajax Vanilla sem jQuery — SitePoint — Alternativas para usar AJAX sem depender do jQuery.
  5. Propriedade do Documento: readyState - Web APIs | MDN — Visão geral dos estados de prontidão do documento.
  6. Evento Window: unload - Web APIs | MDN — Informação sobre o evento unload e redefinição da posição de rolagem.
  7. Explicando Métodos de Debounce e Throttle com Exemplos | CSS-Tricks — Descrição do debounce e throttle como métodos para otimizar o comportamento de rolagem.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!