JavaScript - событие bfcache / pageshow - event.persisted всегда имеет значение false?
В стандартном веб-приложении Java / SpringMVC / JSP / jQuery я пытаюсь обнаружить событие «Назад» (или history.go (-1)), чтобы обновить (AJAX) итоговый контент компонента / панели, когда Я возвращаюсь на страницу (где мы можем изменить данные бэкэнда, отображаемые компонентом итога).
Я попробовал следующее в JavaScript (после нескольких сообщений на StackExchange о том, как этого добиться):
<script type="text/javascript">
$(document).ready(function() {
window.onpageshow = function(event) {
console.log("Event:");
console.dir(event);
if (event.persisted) {
alert("non-jQuery - back to page - loaded from bfcache");
} else {
alert("non-jQuery - loaded page from server");
}
};
$(window).on("pageshow", function(event){
console.log("Event:");
console.dir(event);
if (event.originalEvent.persisted) {
alert("jquery - back to page - loaded from bfcache");
} else {
alert("jquery - loaded page from server");
}
});
});
</script>
Я использую OpenSUSE Linux и пробовал это с FireFox и Chrome (последние версии), но каждый разpersisted
атрибут установлен вfalse
(Я вижу это в консоли JavaScript и по всплывающим предупреждениям из приведенного выше кода). Я имею в виду каждый раз, независимо от того, был ли он загружен с сервера или показан снова через кнопку «Назад» (или ссылку «Назад»).
Я намеревался сделать AJAX-вызов для перезагрузки итогового компонента / панели с обновленными данными с сервера, если страница отображалась с помощью кнопки «Назад» илиhistory.go(-1)
вызов.
Я также попытался установить обработчик выгрузки (который ничего не делает), чтобы предотвратить помещение страницы в bfcache, но он по-прежнему показывает версию с кэшированием bf иevent.persisted
(или жеevent.originalEvent.persisted
) установлен наfalse
.
Правильно ли управляется это свойство в Linux? Я делаю что-то глупое в моем коде? Любая помощь или идеи будут высоко ценится, спасибо!