Ответ 1
Наивная попытка моей работы состояла в том, чтобы просто сохранить текущее состояние в некоторый файл cookie после каждого изменения и просто загрузить их снова при каждой загрузке страницы.
Мне любопытно, есть ли способ обнаружить событие обновления браузера в javascript. Мы используем плагин jQuery.address для обеспечения функциональности функции прямого и обратного вызова для функций AJAX. Проблема, с которой я сталкиваюсь, заключается в том, что этот плагин, похоже, не обнаруживает, обновил ли пользователь страницу.
Этот код выполняется каждый раз, когда пользователь перемещается вперед или назад в истории браузера. Я также хотел бы, чтобы он exexute, когда пользователь обновляется.
$.address.init(function(event) {
}).change(function(event) {
SummaryDiv.SwapPanels(newPanelID);
}
Любые идеи?
Наивная попытка моей работы состояла в том, чтобы просто сохранить текущее состояние в некоторый файл cookie после каждого изменения и просто загрузить их снова при каждой загрузке страницы.
В этих строках у меня была страница, поведение которой я не хотел повторять, если обновлялся, поэтому я изменил хэш программно, как описано в этом ответе.
checkRefresh: function() {
if (document.location.hash === '#visited') {
console.log('Refreshed');
return true;
} else {
document.location.hash = 'visited';
return false;
}
}
UPDATE
Я обнаружил, что, по крайней мере, Mobile Safari игнорирует хеш, если обновление произошло автоматически (например, данные страницы, удаленные из кеша, перед повторным просмотром). В итоге я использовал более сложное решение здесь.
Нашел это в Интернете для вас...
Имеет как javascript умный метод, так и метод cookie.
http://www.tedpavlic.com/post_detect_refresh_with_javascript.php
При обновлении страницы javascript также перезагружается. Итак, не могли бы вы указать, что хотите, прямо в режиме jQuery?
Мне удалось принудительно запустить код события изменения при обновлении
window.onload = $.address.update(function(){
...
})