У меня есть сайт с оверлеем. Вот моя проблема:
- Я нахожусь на странице 1 и нажимаю текст, который открывает оверлей с использованием JS, а также использует
history.pushState()
для изменения URL-адреса соответственно:
history.pushState(null, "Page 2", "/page/2")
Затем я перезагружаю страницу с помощью кнопки перезагрузки браузера, что заставляет мое приложение использовать go на фактический URL-адрес (страница 2), который я ранее нажал, используя history.pushState()
Теперь, когда я нажимаю кнопку возврата в браузере, я ожидаю go возврата на страницу 1, но вместо этого ничего не происходит, кроме как браузер меняет URL-адрес и заголовок на страницы 1 - сам сайт не перезагружается.
Я не знаю, почему это происходит. У меня есть простой прием, который работает, но он кажется очень грязным:
window.addEventListener("popstate", function(e) {
let title = document.title
setTimeout(() => {
if (document.title === title) {
location.reload()
}
}, 100)
})
Этот прием работает, потому что хотя браузер меняет заголовок в браузере при возврате назад, заголовок документа остается прежним, потому что сайт не обновляет sh. Итак, я заставляю refre sh.