Javascript历史记录无法在onpopstate中检索值

时间:2012-03-30 15:33:47

标签: javascript pushstate

这是我的代码:

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);
    }
};

有几个问题:

  • 点击每个页面会更新导航栏网址,但不会将标题更新为the title to use,因为我希望
  • 按回来会创建提醒但价值为undefined而不是8正如我所料

1 个答案:

答案 0 :(得分:3)

  1. 根据https://github.com/browserstate/history.js/wiki/The-State-of-the-HTML5-History-API,目前没有浏览器根据pushState()中的值更新网页标题。我个人认为这是正确的行为 - 页面标题应反映页眉中的<title>元素。

  2. 当您调用pushState()然后使用后退按钮时,您不会返回到上一个pushState(实际上是当前状态),而是回到之前的状态。在你的情况下,听起来你在页面加载时看到状态,这就是为什么selectedMenu未定义的原因。 顺便说一句,只有Chrome才能在onpopstate上启动以匹配初始页面加载,因此在其他浏览器中我不希望看到警报。