История JavaScript не может получить значение в onpopstate - PullRequest
0 голосов
/ 30 марта 2012

Вот мой код:

function pushState() {

    ...snip... (SelectedMenuID has a value of 8)

    var stateObj = { selectedMenu: SelectedMenuID };
    history.pushState(stateObj, "The title to use", path);
}

window.onpopstate = function(event) {
    if (event.state != null) {
        alert(event.state.selectedMenu);
    }
};

Пара проблем:

  • При нажатии на каждую страницу обновляется URL-адрес панели навигации, но не обновляется заголовок до the title to use как я и ожидал
  • При нажатии назад создается предупреждение, но значение равно undefined, а не 8, как я ожидал

1 Ответ

3 голосов
/ 04 апреля 2012
  1. Согласно https://github.com/browserstate/history.js/wiki/The-State-of-the-HTML5-History-API нет браузера, который в настоящее время обновляет заголовок страницы на основе значения в pushState().Лично я считаю, что это правильное поведение - заголовок страницы должен отражать элемент <title> в заголовке страницы.

  2. Когда вы вызываете pushState() и затем используете кнопку возврата, вы не возвращаетесь к последнему pushState (который на самом деле является текущим состоянием), а к состоянию до этого.В вашем случае это звучит так, как будто вы видите состояние при загрузке страницы, поэтому selectedMenu не определено.Кстати, только Chrome запускает onpopstate для соответствия начальной загрузке страницы, поэтому в других браузерах я бы не ожидал увидеть предупреждение.

...