Сохранение состояния html-страницы при обновлении страницы

Как я уже упоминал в других своих вопросах, я создаю собственное веб-приложение.

Теперь у меня есть это приложение -> Вот Plunker! Вы можете увидеть это лучше здесь. Где у меня есть вкладка в заголовке, и я могу перемещаться по нескольким страницам и загружать их содержимое.

<!DOCTYPE html>
<html>
  <head>
   <link rel = "stylesheet" href = "style.css">
   <script src = "https://code.jquery.com/jquery-1.12.4.min.js"></script>
   <script src = "script.js"></script>
  </head>
<body>
  <a href = "link1">Link 1</a>
  <a href = "link2">Link 2</a>
 <div id = "content">
   <!-- Page content displays here --> 
 </div> 
</body>
</html>

$(document).ready(function(){ 
 $('a').click(function(e){
  var page = $(this).attr('href');   
  $('#content').load(page + '.html');   
  return false; // don't follow the link
 }); 
});

Работает нормально! Но у меня проблемы с сохранением состояния страницы.

Например, если я нахожусь на странице 2 и обновил браузер, страница вернется в начальное состояние. Как я могу оставить текущую страницу при обновлении.

Я очень благодарен за каждое решение или совет!

Если вы не беспокоитесь о ссылках на определенные разделы, а просто хотите сохранить текущую страницу для обновления, другой идеей может быть просто сохранение переменной page в сессия / локальное хранилище, cookie или сеансе на стороне сервера.

showdev 30.03.2018 23:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
2
844
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны воспользоваться браузером API истории. При каждой загрузке контента вы должны сохранять состояние в истории.

При жестком обновлении вам необходимо проанализировать URL-адрес и получить правильный контент.

При таком подходе следует помнить одну вещь: вы должны перепрыгивать через препятствия, чтобы поисковым роботам было легче проиндексировать все ваши «страницы».

Другой подход - использовать Турболинки.

Ваше здоровье.

Вы знаете, как это лучше всего сделать? Приветствую и заранее спасибо!

Basch 30.03.2018 23:17

На pinkr.co ваш код запускается в iframe, поэтому вы не можете действительно наблюдать изменения URL-адресов, поскольку только документ верхнего уровня будет отображать его URL-адрес в строке URL-адресов браузера. Что вы можете сделать, чтобы проверить это, - просто вставьте что-то вроде этого в консоль браузера и наблюдайте за изменениями URL-адресов: history.pushState({urlPath: 'test.html'}, '', '/test.html');

Mladen Ilić 30.03.2018 23:23
plnkr.co/edit/4GQ2VGOLT8wuhCEP3ZoG?p=preview Я обновил свой код, но не работал :( Вы знаете, где я могу его добавить
Basch 30.03.2018 23:24

Вы не можете сделать это на сайтах, подобных pinkr.co. У вас должна быть правильная локальная настройка env. :(

Mladen Ilić 30.03.2018 23:26

Я запускаю его также на моем локальном сервере, я могу протестировать его здесь напрямую! Ты спасаешь мне день :)

Basch 30.03.2018 23:26

при обновлении он направляет меня на страницу, но я теряю заголовок :(

Basch 30.03.2018 23:30

Что ж, вам определенно нужно написать еще немного кода, я просто направил вас в правильном направлении с помощью History API. На самом деле не могу сделать больше на SO. :)

Mladen Ilić 30.03.2018 23:34

Другие вопросы по теме