Типичная ajax-страница может менять свой внешний вид и содержание без смены URL'а. Например, на странице есть календарь, при открытии мы видим контент "на понедельник", при клике на нем подкачиваем и показываем контент "на воскресенье".
Если кликнуть на ссылку и уйти с этой страницы, а потом нажать Back, страница скачается снова и мы снова увидим "понедельник", хотя в момент клика это было "воскресенье".
Вопрос - какие есть лучшие техники для сохранения состояния ajax-страницы, чтобы при возврате через Back увидеть ее в таком же виде, в каком мы ее покинули? HTML History не лучший вариант, т.к. использовать навигацию с хэшами (#monday, #sunday) не всегда имеет смысл (в нашем случае, например, не имеет).
Не самое элегантное, но зато очень просто решение — записывать состояние в <input type="hidden" />.
1. При смене дня недели в календаре, записать номер дня недели в это скрытое поле.
2. Во время загрузки страницы, проверять заполнено ли это поле. И, если заполнено, то в соответствии с его содержимым восстановить состояние страницы. Но, если поле пустое, — считаем, что пользователь зашел на страницу в первый раз.
Принцип основывается на том, что поля восстанавливают свое содержание, когда пользователь нажимает кнопку назад. В современных браузерах работать будет, под IE у меня нет возможности проверить.
Кукисы не хорошо, есть одна принципиальная тонкость. Если на страницу зашли "просто так", по ссылке на нее, то показать надо "понедельник", т.е. состояние по умолчанию. Восстанавливать "воскресенье" необходимо только если на страницу вернулись через Back.