история javascript onpopstate - PullRequest
       4

история javascript onpopstate

2 голосов
/ 03 июля 2011

Я пытаюсь понять объект истории 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 Ответ

3 голосов
/ 26 июля 2011

Как я тестировал, e.state получает только всплывающее состояние, которое вы добавляете в историю, когда нажимаете кнопку «Назад» или «Вперед».В противном случае он выдаст вам нулевое значение.

Вы можете использовать параметры для своего URL, чтобы вы могли проверить, поступил ли запрос от хронологического вызова или от URL в адресной строке.

onpopstate = function(event) {
    alert('popEvent: ' + event);
    if(event.state){
        setupPage(event.state);
    } else {
        setupPage(getQStringParam('zid'));
    }
}
...