Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Сохранить положение скролла при переходе по ссылке (https://javascript.ru/forum/events/66660-sokhranit-polozhenie-skrolla-pri-perekhode-po-ssylke.html)

Lucia14 30.12.2016 18:00

Сохранить положение скролла при переходе по ссылке
 
Здравствуйте! Очень прошу помочь решить такую вот задачку.
Есть два дива (два "столбца") с overflow:auto, в одном из которых выводится список записей WP, а во втором диве выводиться полная статья. Задумка в том, чтобы при клике по записи в левом диве, она выводилась полностью в правом.

Все реализовал, осталось только сделать так, чтобы при клике по ссылке слева и переходе на новую страничку в диве слева скролл оставался на том же месте.

Собрал примерный план действий, но не могу его реализовать кодом ;(

1. Создаем обработчик события клика по ссылке
2. Получаем координаты текущего положения скрола и сохраняем их в localestorage
3. Перенаправляем пользователя по самой ссылке
4. На другой странице вешаемся на событие onload в обработчике
5. Извлекаем координаты прокрутки из localestorage
6. Прокручиваем скрол до нужной позиции.

Вот такая страница:
<?php
$getcat = get_the_category();
$cat = $getcat[0]->cat_ID;
?>

<div class="layer">
<?php if (have_posts()) :
query_posts('cat='. $cat);
while (have_posts()) : the_post();
?>

<h3><a href="<?php the_permalink(); ?>" name="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php the_excerpt();
endwhile;
endif;
wp_reset_query();
?>
</div>

<!-- Полный текст статьи -->
<div class="layer2">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h3><?php the_title(); ?></h3>
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>
</div>

Lucia14 31.12.2016 02:14

Решил вопрос вот этими строками
 
<script>
window.addEventListener('DOMContentLoaded', function() {
var div = document.querySelector('.layer');
var scroll = localStorage.getItem('scroll')||0;
div.scrollTop = scroll;
div.addEventListener('scroll', function() {
localStorage.setItem('scroll', div.scrollTop);})});
</script>


Часовой пояс GMT +3, время: 01:15.