Я вхожу в историю браузера с помощью javascript, и у меня почти есть то, что я хочу.
Но я встречаю одну огромную ошибку, позвольте мне объяснить ситуацию:Ошибка Javascript history: Возвращение кажется сломанным
У меня есть меню, а при нажатии на пункт меню, следующий код выполняется:
$("#content").load("http://example.com/menuitem");
window.history.pushState({ page:"http://example.com/menuitem" },"", "http://example.com/menuitem");
document.title = 'Menu item';
У меня также есть пустой onbeforeunload
, поэтому параметры браузера, вперед и назад работают должным образом. И у меня есть функция onpopstate, но я не вижу, чтобы он что-то делал, поэтому не знаю, действительно ли я нуждаюсь в нем.
window.onbeforeunload = function(){
};
window.onpopstate = function(e){
console.log('onpopstate was called');
if(e.state){
window.location.href = e.state.page;
}
};
Теперь моя огромная ошибка: я тестирование следующим образом:
- Тип '' stackoverflow.com в адресной строки
- типа 'example.com' в адресной строки
- Нажмите на пункт меню
- Введите 'google.com' в адресной строке
- Вернитесь назад в браузере, ach stackoverflow.com
Когда я возвращаюсь, первый раз, когда я попал на example.com/menuitem, как и ожидалось, но, возвращаясь во второй раз, я снова попал на ту же страницу, на example.com, что я и хочу. С этого момента, когда я смотрю в истории, моя страница «example.com/menuitem» по какой-то причине дублируется.
Что здесь не так, и как я могу исправить свою ошибку?
Итак, если я правильно понял это, вы дважды выполнили тест, а во второй раз, когда возвращались, последовательность была 'google -> stackoverflow' вместо' google -> example.com -> stackoverflow'? – Raad
@Raad. Последовательность не всегда является «google -> example.com/menuitem -> example.com/menuitem -> и т. Д. (На той же странице постоянно), пока я хочу следовать:' google -> example.com/ menuitem -> example.com -> stackoverflow'. –