Как вернуться к нужной позиции на странице при нажатии кнопки Назад?

Всем привет! Мучает вопрос, не смог найти на него ответ сам. У меня есть страница каталога с товарами, написал небольшой скриптик, чтобы отображались только первые 4 позиции, остальные открываются при нажатии на кнопку "показать все". При переходе на любую из видимых позиций и возврате из них обратно, возвращаешься к месту на странице откуда нажал на ссылку, но вот если отобразить все позиции и перейти по любой из них, то возвращает на страницу со скрытыми товарами. Может как то усложнить, чтобы при возврате все было как и в первом случае? А то не очень красиво получается.
  • Вопрос задан
  • 6294 просмотра
Решения вопроса 1
PretorDH
@PretorDH
HTML5, CSS3, PHP, JS - люблю в чистом виде.
Делается просто:

По событию onscroll пишем в localStorage.scrollTop заначение скрола.
По событию onload читаем из localStorage.scrollTop и устанавливаем позицию scrollTop у элемента с главным скролом.

selector = 'body';   /* <--- cюда положи селетор на элемент с основным скролом */
$('document').on('load', function(){ $(selector).attr('scrollTop', localStorage.scrollTop); }
$(selector).on('scroll', function(){ localStorage.scrollTop = $(selector).attr('scrollTop'); }


P.S. Для юзабельности, обязятельно должен быть элемент перемещающий на начало страницы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Quieteroks
php программист
Эту процедуру делает за Вас браузер. Если вы хотите иначе. Вам нужно писать JS-скрипт, который будет мониторить данные перемещения и открывать спрятанный список. Один из вариантов - якоря + history для изменения адресной строки. Тот же history может отслеживать, вернулся ли пользователь по ссылке. А Вам всего то и нужно применить знания о якоре для открытия списка.
Ответ написан
@FedorBarilyuk
Уточнение ответа Pretor DH
selector = 'body';   /* <--- cюда положить селетор на элемент с основным скролом */
$(selector).on('scroll', function(){
        sessionStorage['scrollTop'] = $(selector).scrollTop();
});
$(document).ready( function(){
        $(selector).scrollTop(sessionStorage['scrollTop']);
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы