История javascript onpopstate
Я пытаюсь понять объект истории HTML5. Вот простой пример, с которого я начал.
function addDialog(){
document.getElementById('d').style.display ='';
history.pushState({name:"changed"},"","#newURL");
}
window.onpopstate = function(e){
alert(e.state);
}
у меня есть div
с идентификатором d
для которого display
свойство none
, При нажатии на ссылку, я буду отображать div и изменить историю, так что новый URL будет загружен.
Когда я копирую вставить новый URL, popstate
событие происходит, и я получаю null
за e.state
,
Из того, что я понимаю, если я загружаю новый URL http://example.com#newURL
, e.state
должен указывать на объект, который я нажал с помощью pushstate.
Пожалуйста, поправьте меня, если я ошибаюсь, а также я хотел бы знать, когда e.state
заселяется.
1 ответ
Как я тестировал, e.state получает только всплывающее состояние, которое вы добавляете в историю, когда нажимаете кнопку "Назад" или "Вперед". Иначе это даст вам ноль.
Вы можете использовать параметры для своего URL, чтобы вы могли проверить, поступил ли запрос от хронологического вызова или от URL в адресной строке.
onpopstate = function(event) {
alert('popEvent: ' + event);
if(event.state){
setupPage(event.state);
} else {
setupPage(getQStringParam('zid'));
}
}