Как сохранить состояние ajax-страницы?

Всем привет,

Типичная ajax-страница может менять свой внешний вид и содержание без смены URL'а. Например, на странице есть календарь, при открытии мы видим контент "на понедельник", при клике на нем подкачиваем и показываем контент "на воскресенье".

Если кликнуть на ссылку и уйти с этой страницы, а потом нажать Back, страница скачается снова и мы снова увидим "понедельник", хотя в момент клика это было "воскресенье".

Вопрос - какие есть лучшие техники для сохранения состояния ajax-страницы, чтобы при возврате через Back увидеть ее в таком же виде, в каком мы ее покинули? HTML History не лучший вариант, т.к. использовать навигацию с хэшами (#monday, #sunday) не всегда имеет смысл (в нашем случае, например, не имеет).
  • Вопрос задан
  • 3726 просмотров
Решения вопроса 1
GeneMoss
@GeneMoss
void
Не самое элегантное, но зато очень просто решение — записывать состояние в <input type="hidden" />.

1. При смене дня недели в календаре, записать номер дня недели в это скрытое поле.
2. Во время загрузки страницы, проверять заполнено ли это поле. И, если заполнено, то в соответствии с его содержимым восстановить состояние страницы. Но, если поле пустое, — считаем, что пользователь зашел на страницу в первый раз.

Принцип основывается на том, что поля восстанавливают свое содержание, когда пользователь нажимает кнопку назад. В современных браузерах работать будет, под IE у меня нет возможности проверить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@mayorovp
При использовании History API никто не заставляет использовать хеши - ведь там есть второй параметр, объект состояния страницы.
Ответ написан
@Masterme
Можно использовать кукисы, но это не позволит пользователям делиться URL.
Ответ написан
@softshape Автор вопроса
Кукисы не хорошо, есть одна принципиальная тонкость. Если на страницу зашли "просто так", по ссылке на нее, то показать надо "понедельник", т.е. состояние по умолчанию. Восстанавливать "воскресенье" необходимо только если на страницу вернулись через Back.
Ответ написан
@softshape Автор вопроса
Клево! А почему не элегантное? Оно очень простое и невидимое для пользователя, а значит - самый лучший выбор :), спасибо за идею.
Ответ написан
Ваш ответ на вопрос

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

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