Обнаружение браузера Обновление в Javascript

Мне любопытно, есть ли способ обнаружить событие обновления браузера в javascript. Мы используем плагин jQuery.address для обеспечения функциональности функции прямого и обратного вызова для функций AJAX. Проблема, с которой я сталкиваюсь, заключается в том, что этот плагин, похоже, не обнаруживает, обновил ли пользователь страницу.

Этот код выполняется каждый раз, когда пользователь перемещается вперед или назад в истории браузера. Я также хотел бы, чтобы он exexute, когда пользователь обновляется.

 $.address.init(function(event) {
}).change(function(event) {

        SummaryDiv.SwapPanels(newPanelID);
    }

Любые идеи?

Ответы

Ответ 1

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

Ответ 2

В этих строках у меня была страница, поведение которой я не хотел повторять, если обновлялся, поэтому я изменил хэш программно, как описано в этом ответе.

checkRefresh: function() {
    if (document.location.hash === '#visited') {
        console.log('Refreshed');
        return true;
    } else {
        document.location.hash = 'visited';
        return false;
    }
}

UPDATE

Я обнаружил, что, по крайней мере, Mobile Safari игнорирует хеш, если обновление произошло автоматически (например, данные страницы, удаленные из кеша, перед повторным просмотром). В итоге я использовал более сложное решение здесь.

Ответ 4

При обновлении страницы javascript также перезагружается. Итак, не могли бы вы указать, что хотите, прямо в режиме jQuery?

Ответ 5

Мне удалось принудительно запустить код события изменения при обновлении

  window.onload = $.address.update(function(){    
...
})