您好,匿名用户
随意问技术百科期待您的加入

获取不到onpopstate事件的state?

0 投票

代码如下:

$(function() {
    $('a').bind('click', function() {
        var actionObj = $(this);
        var actionText = actionObj.text();
        var stateObj = {
            title : actionText,
            url : actionObj.attr('href'), 
            msg : actionText
        };

        window.history.pushState(stateObj, actionObj, actionObj.attr('href'));

    });

    window.onpopstate = function(e) {
        console.log(e.state);
    };
})

查了一些资料,完全不知道问题在哪里……

chrome 或者 firefox 都不行……不知道哪里做错了……

用户头像 提问 2012年 12月1日 @ Artemis 上等兵 (162 威望)
分享到:

1个回答

0 投票

其实你只需要理解一点,onpopstate是在history.back()之后调用的。所以这个时候e.state里返回实际上是back之后的状态,比如我在下面的代码里。一次push了两个state,当我点击一次后退的时候{page : 2}的state已经pop出去了,这时候e.state里就只剩下{page : 1}了。

(function() {
    $('a').bind('click', function() {
        window.history.pushState({page : 1}, 'test', '#test1');
        window.history.pushState({page : 2}, 'test', '#test2');
        return false;
    });

    window.onpopstate = function(e) {
        console.log(e.state);
    };
})();
用户头像 回复 2012年 12月1日 @ Nocturne 上等兵 (262 威望)
提一个问题:

相关问题

0 投票
1 回复 1 阅读
用户头像 提问 2014年 6月7日 @ Nunu 上等兵 (350 威望)
0 投票
0 回复 6 阅读
用户头像 提问 2014年 4月3日 @ Pisces 上等兵 (182 威望)
0 投票
1 回复 25 阅读
0 投票
1 回复 35 阅读
用户头像 提问 2013年 11月7日 @ Malzahar 上等兵 (335 威望)
0 投票
1 回复 46 阅读
用户头像 提问 2013年 9月23日 @ Evelynn 上等兵 (244 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...