求大佬帮我看下前端代码, history 历史上一页问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TOTOP
11.88D
V2EX    前端开发

求大佬帮我看下前端代码, history 历史上一页问题

  •  
  •   TOTOP 2024-04-29 10:32:03 +08:00 1985 次点击
    这是一个创建于 603 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <button id='aaa' style="font-size:80px;padding:50px;" Onclick="pushHistory('home2222')">21122121212</button>

    <script>
    function pushHistory(e) {
    var state = {
    title: "title",
    url: "#"+e
    };
    window.history.pushState(state, "title", "#"+e);
    }

    setTimeout(function() {

    // $('#aaa').click();

    }, 1800);
    </script>

    浏览器打开,点击按钮,url 增加#home2222 ,如果点后退正常,退到打开的上一页
    但如果打开定时的 aaa 自动点击,URL 等待 1.8 秒可以加上#home2222 但后退与上面不正常,退出去了。
    13 条回复    2024-04-29 12:59:16 +08:00
    4Et5ShxMIq58n6Lr
        1
    4Et5ShxMIq58n6Lr  
       2024-04-29 10:44:11 +08:00
    惭愧啊 7 年前端的我也以为是一样的,问了下 ai , 两者还是有区别的,手动点击会记录到浏览器中,而 js 方式不会
    4Et5ShxMIq58n6Lr
        2
    4Et5ShxMIq58n6Lr  
       2024-04-29 10:47:54 +08:00
    @laobobo 更正一下,貌似 firfox 没事,有可能是 chrome 自己的行为
    yohane3016
        3
    yohane3016  
       2024-04-29 10:48:58 +08:00
    然而 Chrome 124 和 firefox 124 试了都正常后退,区别在于 chrome 要点击一次页面才会更新更新前进后退按钮的状态,firefox 是在 state 发生变动时就更新前进后退按钮的状态
    TOTOP
        4
    TOTOP  
    OP
       2024-04-29 10:49:12 +08:00
    @laobobo 对 Chrome 会这样,所以安卓机器也这样
    TOTOP
        5
    TOTOP  
    OP
       2024-04-29 10:49:55 +08:00
    @yohane3016 安卓机器不行 大部分内核还是老的
    yohane3016
        7
    yohane3016  
       2024-04-29 10:57:32 +08:00
    @laobobo #6 确实应该设计如此,手机上试了好几个浏览器都是 pushState 后手动点一下屏幕就能正确返回的
    NoManPlay
        8
    NoManPlay  
       2024-04-29 11:10:05 +08:00
    模拟点击不会触发 popstate 事件
    ```js
    window.addEventListener('popstate', function(event) {
    if (event.state) {
    console.log("Page was loaded: ", event.state.page);
    // 根据 event.state 更新页面内容
    }
    });
    ```
    southlink
        9
    southlink  
       2024-04-29 11:46:24 +08:00
    在 chrome 中,要有用户操作,插入的历史记录才会被激活,应该是为了防止有网页恶意插入历史记录不让用户返回。可以看看这个: https://html.spec.whatwg.org/multipage/interaction.html#history-action-activation
    TOTOP
        10
    TOTOP  
    OP
       2024-04-29 11:47:32 +08:00
    @NoManPlay 问题我是直接打开这个页面 在自动点击 后退大退了 没法监听
    tanranran
        11
    tanranran  
       2024-04-29 12:46:46 +08:00
    看了楼上的回答,涨知识了
    CHTuring
        12
    CHTuring  
       2024-04-29 12:56:29 +08:00
    这个在移动端的 H5 活动页是很常见的,所以 H5 点全局返回按钮需要加上判断事件

    ```
    if (document.referrer) {
    // 返回上一页
    } else {
    // 返回首页
    }
    ```
    Xu3Xan89YsA7oP64
        13
    Xu3Xan89YsA7oP64  
       2024-04-29 12:59:16 +08:00
    你问的问题我不知道,但是改 hash 为啥不用 a 标签或者直接改 window.location.hash?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5440 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 61ms UTC 08:36 PVG 16:36 LAX 00:36 JFK 03:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86