访问pushState状态对象内容

时间:2014-07-31 23:22:30

标签: javascript jquery html html5

$(function(){
    $('button').click(function(e){
        e.preventDefault();

        var nextUrl = 'page1.html';
        var previousUrl = window.location.href;

        $.get(nextUrl, function(data){
            $('body').html(data);
            history.pushState({content: data}, '', nextUrl); <--How to retrieve the content data
        });
    });
    $(window).bind('popstate', function(e){
        console.log(e.state.content);
        //How do I get the data stored in pushState?
    });
});
</script>

我已将整个页面信息存储在状态pushState({content:data}..中,但如何在popstate内检索它?

谢谢!

2 个答案:

答案 0 :(得分:1)

你将在线下使用

window.history.state['content']

答案 1 :(得分:1)

当活动历史记录条目更改时,会在窗口上触发popstate事件。最常见的情况是单击浏览器后退或前进按钮(或执行对back()的调用,执行forward()或go())。

传递给侦听器回调的事件包含一个state属性,用于检索与历史记录条目关联的状态对象。

window.addEventListener('popstate', function(event) {
  var state = event.state;
});

值得注意的是,对pushState()和replaceState()的调用不会触发popstate事件。

Chrome和Safari会在页面加载时触发popstate事件,但Firefox不会。