为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只斗牛犬 2023-04-05 16:13:23
代码如下:$(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 都不行……不知道哪里做错了……
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

其实你只需要理解一点,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);
    };})();


查看完整回答
反对 回复 2023-04-07
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

如果要获得pop出去的那个状态,可以先replaceState,然后再pushState

 window.history.replaceState({page : 1}, '', '');  
 window.history.pushState({}, '', '#test1');

这样popstate事件触发的时候就能获得event.state的值为{page: 1}


查看完整回答
反对 回复 2023-04-07
  • 2 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信