2016-05-06 3 views
9

Ich weiß nicht, ob jemand noch Sammy.js verwendet, aber ich fand es perfekt meine Bedürfnisse für eine leichte Routing-und Templating-Bibliothek. Wenn jemand andere Ideen hat, lass es mich wissen.Sammy.js Cache und Scroll-Position beim Zurückgehen in die Geschichte

Mein Problem ist, dass wenn ich eine lange Seite habe und ich runterscrolle, klicke auf einen Link auf dieser Seite und gehe zurück, die ganze Seite wird neu geladen (in Sammy wird die GET Route aufgerufen) und springt auf die ganz oben auf der Seite.

Meine Frage ist: Gibt es eine Möglichkeit, Sammy die Seite zwischenzuspeichern und die Scroll-Position zu behalten, wenn Sie in der Geschichte zurückgehen?

Vielen Dank im Voraus.

+1

Als Abhilfe, die ich vorschlagen, http://stackoverflow.com/a/5651372/2346893 mit http://stackoverflow.com/a/10115269/2346893 kombiniert werden, können Sie auch hinzufügen ID des aktuell sichtbaren Elements im Hash-Verlauf, wenn Sie durch die Seite blättern, wenn Sie dies nicht manuell tun möchten. –

+0

Sie können localstorage verwenden, um scrolltop und url als Parameter auf jeder besuchten Seite zu übergeben. –

Antwort

5

Sie könnten localStorage als alternative Möglichkeit zum Speichern von URL-Scroll-Top als Paar verwenden. Auf diese Weise erinnert sich der Browser an srolltop Position für die angegebene URL.

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

Verwandte Themen