Daniel F Pupius описа проблема като:
Много сайтове грешат това и е наистина досадно. Когато потребителят навигира с помощта на бутона за напред или назад на браузъра, позицията на превъртане трябва да бъде същата като последната, когато е бил на страницата. Това понякога работи правилно във Facebook, но понякога не. Изглежда, че Google+ винаги губи позицията ви при превъртане.
Така че вече има много въпроси относно нулирането на превъртането до горната част на страницата, когато разглеждате нова страница. Готварската книга на Ember.js също показва как да се свържете с Route.activate
:
export default Ember.Mixin.create({
activate: function() {
this._super();
window.scrollTo(0,0);
}
});
Това обаче решава само половината от проблема. Когато потребителят използва бутоните назад/напред, позицията на превъртане няма да бъде възстановена, а просто нулирана.
Има доста опити за решаване на това, много чрез просто съхраняване на позицията на превъртане в екземпляра Ember.Controller
, например в този статия. Това обаче е само частично решение. Ако контролерът се използва многократно, ще се запази само едно състояние на превъртане.
Как може да се запази прилагането на браузъра по подразбиране за възстановяване на старото състояние на превъртане? Следователно, не правете нищо, ако Route.activate
е задействано от промяна на състоянието на историята на html5?