Estou construindo um site que estou publicando com div
s. Quando atualizo a página após a rolagem para a posição X, a página é carregada com a posição de rolagem como X.
Como forçar a rolagem da página para cima na atualização da página?
O que eu consigo pensar é em alguns JS ou jQuery executados como
onLoad()
função da página para SET, as páginas rolam para o topo. Mas eu não sei como eu poderia fazer isso.Uma opção melhor seria se houver alguma propriedade ou algo para carregar a página com sua posição de rolagem como padrão (por exemplo, na parte superior), que será como o carregamento da página , em vez da atualização da página .
Respostas:
Você pode fazer isso usando o método scrollTop no DOM pronto :
fonte
Para uma implementação JavaScript simples e simples :
fonte
Safari 11.0.3
e funciona bem para mim, qual você está usando?return
?document.querySelector('html').style.scrollBehavior = '';
pode ser necessário. Se foi definido comosmooth
, pode não chegar ao topo antes da página ser recarregada.A resposta aqui não funciona para o safari, document.ready geralmente é acionado muito cedo.
Deveria usar o
beforeunload
evento que o impede de fazer alguma coisasetTimeout
fonte
Novamente, a melhor resposta é:
(isso não é jQuery, procure se você estiver procurando pelo método JQ)
EDIT: um pequeno erro é "onbeforunload" :) O Chrome e outros navegadores "lembram" a última posição de rolagem antes do descarregamento, portanto, se você definir o valor em 0,0 imediatamente antes do descarregamento da sua página, ele lembrará 0,0 e ganhou volte para onde estava a barra de rolagem :)
fonte
document.documentElement.scrollTop
funcionar. Eu normalmente uso os dois.Verifique a
.scrollTop()
função jQuery aquiSeria algo como
fonte
Você também pode tentar
Se você quiser rolar na posição x, poderá alterar o valor de 0 para x.
fonte
Em vez de
location.reload()
, basta usarlocation.href = location.href
. Ele não irá rolar para a posição anterior comolocation.reload()
faz.Nota: Isso não será recarregado se houver algum # no URL
fonte
Coloque o script acima na
<head>
tag do seu html. Não sabe ao certo como os aplicativos de página única se comportam! Mas com certeza funciona como charme em páginas regulares.fonte
A resposta aqui (rolando para dentro
$(document).ready
) não funcionará se houver um vídeo na página. Nesse caso, a página é rolada após esse evento ser disparado, substituindo nosso trabalho.A melhor resposta deve ser:
fonte
não funcionou para mim, pois o google chrome apenas rolaria para baixo após o carregamento da página. O que eu usei foi
// Isso carrega a página com um # no final. Por isso, sempre será carregado no topo.
fonte
Para redefinir a janela, role de volta para o topo,
$(window).scrollTop(0)
no evento beforeunload faz os truques, no entanto, eu testei no Chrome 80, ele voltará ao local antigo após o recarregamento.Para evitar isso, defina
history.scrollRestoration
como"manual"
.fonte
A resposta supercalifragilisticexpialidocious é:
adicione isso na parte superior do seu arquivo js ou tag de script
fonte