从popState()获取pushstate()的状态

时间:2015-01-11 21:21:11

标签: javascript history.js

我有这个:

history.pushState({id:1}, 'new title', new_url);

现在,当有人使用浏览器的后退按钮时,如何检索id(1)?

$(window).bind('popstate', function(event) {
   event.state.id # gives an error
});

我尝试了上述内容(如答案所示),我得到的错误是"无法读取属性' id'未定义"。

2 个答案:

答案 0 :(得分:2)

好吧,我终于找到了答案:

popstate returns event.state is undefined

它说:

事件是jQuery事件对象,而不是DOM事件对象。

要访问DOM事件对象,请使用event.originalEvent:http://jsfiddle.net/pimvdb/un4Xk/1/

var state = event.originalEvent.state; 请记住,状态仅在新状态具有数据时定义,因此在单击然后返回初始状态时不可用:

initial state
link to state 1
back button to initial state (no data available)

然而,点击,点击其他时间然后返回时可以使用

initial state
link to state 1
link to state 2
back button to state 1 (data available)  

答案 1 :(得分:2)

根据MDN,你也可以使用:

var currentState = history.state;