Daniel F Pupius beschrieben, das Problem so:Ember.js scroll auf Geschichte wiederherstellen, Reset auf Link blättern
Viele Websites bekommen dies falsch und es ist wirklich ärgerlich. Wenn der Benutzer mit der Vorwärts- oder Zurück-Taste des Browsers navigiert, sollte die Bildlaufposition dieselbe sein wie beim letzten Mal auf der Seite. Dies funktioniert manchmal auf Facebook korrekt, manchmal nicht. Google+ scheint immer die Scroll-Position zu verlieren.
Es gibt also bereits zahlreiche Fragen zum Zurücksetzen des Bildlaufs zum Anfang der Seite, wenn Sie zu einer neuen Seite navigieren. Ember.js Kochbuch auch shows how to hook into Route.activate
:
export default Ember.Mixin.create({
activate: function() {
this._super();
window.scrollTo(0,0);
}
});
jedoch nur, löst das Problem halbieren. Wenn der Benutzer die Zurück/Vorwärts-Tasten verwendet, wird die Bildlaufposition nicht wiederhergestellt, sondern einfach zurückgesetzt.
Es gibt einige Versuche, dies zu lösen, viele, indem Sie nur die Bildlaufposition innerhalb der Ember.Controller
Instanz speichern, zum Beispiel in dieser article. Dies ist jedoch nur eine Teillösung. Wenn der Controller mehrfach verwendet wird, bleibt nur ein einzelner Bildlaufstatus erhalten.
Wie kann die standardmäßige Browserimplementierung zum Wiederherstellen des alten Bildlaufstatus beibehalten werden? Also, nichts tun, wenn Route.activate
ausgelöst wurde von einem html5 Verlaufsstatus ändern?
Ich denke, das wird sich nicht an zwei verschiedene Scroll-Positionen erinnern, wenn der Controller zweimal besucht wurde? – bouke
Diese Mischung gilt für die Route, nicht Controller. Es merkt sich die Scroll-Position beim Verlassen der Route (siehe den Abschnitt "deaktivieren") und stellt sie dann wieder her, wenn Sie zurückkommen. – JeremyTM