Obter posição de rolagem atual e passá-lo como uma variável com um link?
-
06-07-2019 - |
Pergunta
Eu vou ser honesto, eu sou maneira fora de minha profundidade aqui. Eu criei um sistema de paginação onde você clica em um link que recarrega a página e um certo número de itens da lista são mostrados em uma lista não ordenada. Quando você clicar nele novamente ele vai recarregar a página e mais itens que mostram. Pense como Twitter mostra os tweets no seu feed.
O problema é quando se recarrega a página permanece no topo. O que eu gostaria é para ele para saltar para a mesma posição na página que tinha anteriormente.
Eu já tenho um seletor para o link set up bem Eu só não sei como obter a posição de rolagem atual e, em seguida, passá-lo para a nova página para que possa saltar.
Aqui está o meu código até agora:
jQuery(document).ready(function(){
$("a[rel=more]").live("click", function(){
//script...
});
});
Para onde eu vou daqui?
Solução
-
Recarregar os itens usando AJAX em vez de recarregar a página inteira.
-
obter e definir a posição de rolagem usando
window.pageYOffset
ewindow.scrollTo(0, y)
.Eu armazenar a posição no hash da URL:
// after loading the document, scroll to the right position // maybe location.hash has to be converted to a number first $(document).ready(function() { window.scrollTo(0, location.hash); }); // I'm not quite sure if reload() does preserve the hash tag. location.hash = window.pageYOffset; location.reload();
Outras dicas
Como gs disse adicionar os elementos através de uma chamada de ajax em vez de de recarregar a página.
Se você não quiser usar o jQuery.ScrollTo plugar. Que suporta tudo relacionado a rolagem você jamais poderia ter sonhado
Eu acho que o que você precisa é apenas para passar uma âncora HTML no final do seu link. O navegador irá rolar automaticamente para o elemento ao lado da âncora correspondido. Exemplo:
<a href="page2.html#myanchor">Next page</a>
Em algum ponto no meio da página 2:
<a name="myanchor">My item N</a>
de acordo com a ligação de @Shawn Grigson, pageYOffset não é suportado o mesmo em todos os navegadores.
uma solução jQuery (espero verdadeiramente cross-browser compatível, embora eu ainda não testei) para obter e definir rolagem vertical de um elemento é scrollTop () .