Верните пользователя туда, где они прокручивались на предыдущей странице при нажатии кнопки " Назад браузера

можно ли вернуть пользователя в область страницы, где они прокручиваются вниз при нажатии кнопки "Назад" в браузере? Как в - - - pageA вдвое больше вашего размера экрана (следовательно, вам нужно прокрутить, чтобы прочитать больше). Вы нажимаете ссылку на pageA, чтобы перейти на новую страницу - pageB. После прочтения нажмите кнопку Назад в браузере. Теперь, когда вы возвращаетесь в pageA, вы снова наверху и должны прокрутить вниз, где вы были, чтобы продолжить чтение остальной части страницы.

есть ли Jquery или JS способ вернуться к этой точке на странице. Может, чем-то .scrollTop()?

3 ответов


если содержимое загружается после запуска события "загрузка" страницы, кнопка "назад" не вернет вас в прежнее положение. Потому что браузер прокручивается перед событием "load".

чтобы браузер запомнил положение прокрутки в этом случае, вы должны сохранить положение прокрутки и статус (какое содержимое было загружено) где-то перед навигацией. Либо в файле cookie, либо в хэше url.

Если pageA-это просто статическая страница без динамической содержимое (загружается после события "load", браузер должен помнить положение прокрутки, когда вы вернетесь.

для динамического содержимого, по крайней мере, включает две части. Один восстанавливает состояние страницы при нажатии кнопки "назад", поэтому загружается все динамическое содержимое, некоторые расширители расширяются или сворачиваются. Другой-прокрутите туда.

первая часть зависит от того, как реализованы страницы. Во 2-й части вы можете поместить верхнюю часть прокрутки в cookie, когда страница делает onUnload. Например

$(window).unload(function() {$.cookie('scrollTop',$(window).scrollTop());});

Это можно сделать с помощью хранилища сеансов.

$(window).scroll(function () {
  //set scroll position in session storage
  sessionStorage.scrollPos = $(window).scrollTop();
});
var init = function () {
   //return scroll position in session storage
   $(window).scrollTop(sessionStorage.scrollPos || 0)
};
window.onload = init;

для определения положения прокрутки можно использовать следующий код.

 $(window).scroll(function (event){
    var scroll = $(window).scrollTop();
    // Do something
 });

затем сохраните прокрутку в сеансе и при нажатии кнопки назад сделайте scrollTop(scroll) .