2016-05-06 8 views
9

Non so se qualcuno sta ancora utilizzando Sammy.js, ma ho trovato che si adatta perfettamente alle mie esigenze per una libreria di routing e modelli leggera. Se qualcuno ha altre idee, per favore fatemelo sapere.Sammy.js cache e posizione di scorrimento quando si torna indietro nella storia

Il mio problema è che quando ho una pagina lunga e faccio scorrere verso il basso, clicco su un link in questa pagina e torno indietro, l'intera pagina viene ricaricata (in Sammy, la route GET viene chiamata) e salta al parte superiore della pagina.

La mia domanda è: c'è un modo per avere Sammy cache nella pagina e mantenere la posizione di scorrimento quando si torna indietro nella cronologia?

Grazie in anticipo.

+1

Come soluzione alternativa suggerisco, http://stackoverflow.com/a/5651372/2346893 combinato con http://stackoverflow.com/a/10115269/2346893, è possibile anche aggiungere id dell'elemento corrente visibile alla cronologia hash mentre scorri la pagina, se non vuoi farlo manualmente. –

+0

è possibile utilizzare localstorage per passare scrolltop e url come parametri in ogni pagina visitata. –

risposta

5

È possibile utilizzare localStorage come metodo alternativo per memorizzare url-scrolltop in coppia. In questo modo il browser ricorda la posizione srolltop di per l'URL specificato.

var scroltop,url; 
$(window).scroll(function() { 
    scroltop = $(this).scrollTop(); 
    url = window.location.href; 
    clearTimeout($.data(this, 'scrollTimer')); 
    $.data(this, 'scrollTimer', setTimeout(function() { 
    localStorage.setItem(url,scroltop); 
    }, 250)); 
}); 
if(localStorage.getItem(window.location.href)) { 
    url = window.location.href; 
    scroltop = localStorage.getItem(url); 
    $(window).scrollTop(scroltop); 
} 

JSbin example

Problemi correlati