
1 4Et5ShxMIq58n6Lr 2024-04-29 10:44:11 +08:00 惭愧啊 7 年前端的我也以为是一样的,问了下 ai , 两者还是有区别的,手动点击会记录到浏览器中,而 js 方式不会 |
2 4Et5ShxMIq58n6Lr 2024-04-29 10:47:54 +08:00 @laobobo 更正一下,貌似 firfox 没事,有可能是 chrome 自己的行为 |
3 yohane3016 2024-04-29 10:48:58 +08:00 然而 Chrome 124 和 firefox 124 试了都正常后退,区别在于 chrome 要点击一次页面才会更新更新前进后退按钮的状态,firefox 是在 state 发生变动时就更新前进后退按钮的状态 |
4 |
5 TOTOP OP @yohane3016 安卓机器不行 大部分内核还是老的 |
6 4Et5ShxMIq58n6Lr 2024-04-29 10:51:52 +08:00 |
7 yohane3016 2024-04-29 10:57:32 +08:00 @laobobo #6 确实应该设计如此,手机上试了好几个浏览器都是 pushState 后手动点一下屏幕就能正确返回的 |
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 更新页面内容 } }); ``` |
9 southlink 2024-04-29 11:46:24 +08:00 在 chrome 中,要有用户操作,插入的历史记录才会被激活,应该是为了防止有网页恶意插入历史记录不让用户返回。可以看看这个: https://html.spec.whatwg.org/multipage/interaction.html#history-action-activation |
11 tanranran 2024-04-29 12:46:46 +08:00 看了楼上的回答,涨知识了 |
12 CHTuring 2024-04-29 12:56:29 +08:00 这个在移动端的 H5 活动页是很常见的,所以 H5 点全局返回按钮需要加上判断事件 ``` if (document.referrer) { // 返回上一页 } else { // 返回首页 } ``` |
13 Xu3Xan89YsA7oP64 2024-04-29 12:59:16 +08:00 你问的问题我不知道,但是改 hash 为啥不用 a 标签或者直接改 window.location.hash? |