Страница не перезагружается при возврате в историю в сочетании с window.history.pushState
Когда я изменяю URL с window.history.pushState
страница не перезагружается автоматически при возврате в историю браузера, например, при нажатии на кнопку "истории назад". Почему страница не перезагружается автоматически? Могу ли я изменить это поведение?
Вот небольшой фрагмент кода, иллюстрирующий эту "проблему":
<html>
<head>
<title>Location test</title>
<script>
function load() {
var value = window.location.search.substr(1);
document.getElementById('myInput').value = value;
document.title = 'Location test - ' + value;
}
function set(el) {
window.history.pushState('', '', window.location.pathname + '?' + el.value);
document.title = 'Location test - ' + el.value;
}
</script>
</head>
<body onload="load();">
<input id="myInput" type="text" onkeyup="set(this);">
</body>
</html>
Просто напишите что-нибудь в текстовое поле, и история браузера обновится соответствующим образом. Нажмите на кнопку назад истории браузера не обновляет страницу. Вы должны вручную обновить его.
Я работал над этим, вставив свою "кнопку назад" на веб-сайте, который работает window.history.back(); location.reload();
, Но я был бы рад, если бы обычный браузер "History-Back-Button" добился цели (также).
1 ответ
Я думаю, что это может объяснить тему намного лучше, чем я. http://rosspenman.com/pushstate-jquery
Popstate является ключом
Я работаю над очень похожей проблемой. Не думаю, что это красиво, но следующий фрагмент или его вариант может помочь
$(window).on("popstate", function(e) {
if (e.originalEvent.state !== null) {
location.reload()
}
});