Я пытаюсь создать приложение Ember, в котором сохраняются положения прокрутки между маршрутами, предоставляя пользователю более приятное впечатление во время просмотра.Сохранение позиции прокрутки в Ember
Ожидаемый результат
Если я прокручиваю 500px вниз на/страницаБ, нажмите ссылку/страницаА, нажмите браузер кнопку назад я должен вернуться в верхней 500px прокрутки.
Фактический результат
При нажатии кнопки браузера назад, верхняя свитка равна высоте/страницаА.
Как воспроизвести
git clone https://github.com/eTilbudsavis/ember-scroll-demo
cd ember-scroll-demo
npm install
ember serve
open http://localhost:4200/pageb
Затем прокрутите весь путь до дна, нажмите на ссылку страницаА, а затем нажмите на кнопку браузера назад, и вы должны увидеть эту проблему.
Конечные ноты
Я думаю, что причина такого поведения, когда я нажимаю браузер кнопку назад, браузер пытается прокрутить назад к позиции, которую он имел, прежде чем покинуть этот маршрут. Поскольку Ember пока не отобразил эту точку зрения, браузер не может туда попасть. Он может прокручиваться так далеко, как высота/pagea.
Теперь, что более сложно, если я иду на консоль браузера и вручную устанавливаю верхнюю часть прокрутки после нажатия, ничего не происходит. Кажется, браузер считает, что он находится в правом верхнем углу прокрутки, хотя это не так. Если я сделаю одиночный свиток с помощью мыши, браузер скачет полностью вниз до того места, где должен был быть.
Надеюсь, я объяснил это как можно более кратким. В противном случае, не стесняйтесь спрашивать больше деталей.
Спасибо!
Я обновил свой ответ, он должен теперь работать как Firefox и Chrome браузеры. –
другой ответ, со смесью: http://reefpoints.dockyard.com/2014/05/05/preserve-scroll-position-in-ember-apps.html – givanse
Я пробовал это, но на самом деле это не так особенно в Chrome. – user3365242