使用history.pushState后检测浏览器后退按钮

时间:2015-01-31 20:30:48

标签: javascript jquery html

我有一个三阶段登录表单,可以显示/隐藏页面上的内容。当用户从步骤1进入步骤2时,我调用以下内容:

var stateObj = { foo: "bar" };
history.pushState(stateObj, "", "");

我看到浏览器后退按钮启用。

现在,我正试图抓住后退按钮点击,这样我就可以隐藏/显示内容(例如 - 回到第1阶段)。

如何在此方案中检测浏览器后退按钮?我不希望URL改变,我只想在用户回击时调用一些JS函数。我的目标是现代桌面/移动浏览器。

2 个答案:

答案 0 :(得分:10)

您可以使用onpopstate事件。

window.onpopstate = function(event) {
  alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
};

有关详细信息,请参阅the MDN page about the onpopstate event.

答案 1 :(得分:1)

要检测绑定到popstate事件的后退按钮:

$(window).bind("popstate", function(e) {
    var state = e.originalEvent.state;
    if ( state === null ) { 
        console.log("step one");
    } else { 
        console.log(state.foo);
    }
});