Страница не перезагружается при возврате в историю в сочетании с 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()
        }
    });
Другие вопросы по тегам