Bei einem Projekt, an dem ich gearbeitet habe, habe ich genau das Gleiche überlegt. Eine Option, über die ich nachgedacht habe, war, dass die Schaltfläche "Zurück" zu der Stelle zurückkehren kann, an der der Link angeklickt wurde (wie beim normalen Browsen).
Zunächst müssen Sie aufzeichnen, auf welcher Seite des unendlichen Bildlaufs Sie sich befinden, damit Sie diesen Abschnitt erneut aufrufen können. Dies können Sie durch geschicktes Herumspielen mit der window.location.hash
Wert. Wenn Sie sich meine Antwort auf diese Frage Ich erkläre ausführlicher, wie man das in einfachem JavaScript oder jQuery macht, indem man Asuals Adress-Plugin .
Der grundlegende Teil davon sieht folgendermaßen aus:
// Whatever you're using to load the next page
function scrollToNextPage(page){
// Your infinite scrolling stuff
$.address.parameter("currentPage", page);
}
$.address.externalChange(function(){
var page = $.address.parameter("currentPage"),
top = $.address.parameter("linkTop");
loadAjaxUpTo(page);
$('html, body').animate({ scrollTop: top }, 500);
});
// Set a parameter for the location of a clicked link
$("a").live('click', function(){
$.address.parameter("linkTop", $(this).scrollTop());
});
Den letzten Teil (die Position des angeklickten Links) habe ich nicht implementiert, aber ich wüsste nicht, warum es nicht funktionieren sollte. Es würde dazu führen, dass das Fenster schön an die Stelle gescrollt wird, an der Sie sich befinden. Sie können es immer mit einem Anker auf die geladene Seite statt (aber wenn Sie zu ihm scrollen, wird es immer an den Anfang der Seite gehen).
Allerdings gibt es ein paar Punkte, Ich würde das nicht empfehlen . Zumindest für das Projekt, an dem ich arbeitete, war das nicht wirklich notwendig. In meinem Projekt erwarteten wir, dass der Benutzer zurückgehen würde, um seine Optionen zu ändern, und dachten, dass das Scrollen kein Problem sein würde (obwohl wir nicht so viele Seiten zum Scrollen hatten). AJAX (und Ihr JavaScript zum Einstellen der Bilder) muss geladen und erneut ausgeführt werden, was viel Zeit in Anspruch nimmt, je nachdem, wie viele Seiten Sie neu laden müssen. Zusätzlich zu der Zeit, die für das Blättern zum Link benötigt wird (Sie könnten einfach window.scrollTo
aber es gibt keine Animationen, also ist alles sehr ruckelig. Sie könnten immer nur die Seite laden, auf der sich die Person gerade befindet, und die vorherigen Seiten vergessen, aber auf diese Weise brechen Sie immer noch die Benutzererfahrung. Oder (was ich versucht habe) war, ein unendliches Scrollen in zwei Richtungen zu implementieren. Es würde also die Seite laden, von der aus der Benutzer geklickt hat, und prepend
die vorherigen Seiten, wenn sie nach oben gescrollt wurden - das war allerdings zu viel Arbeit für das, was es war.
Ein weiterer Punkt ist, dass Sie, wenn Sie es trotzdem tun würden, eine GET
Anfrage, um Ihre Seiten abzurufen (und stellen Sie sicher, dass der Cache nicht so eingestellt ist, dass er sofort abläuft). Ich habe festgestellt, dass Seiten, die per Ajax mit der GET-Anforderung angefordert werden, aus dem Cache geholt werden (zumindest bei einigen Browsern, die ich ausprobiert habe). Senden Sie Ihre Daten über eine POST
wird der Cache immer ignoriert.