实现history.back()返回后刷新历史页面

当使用history.back()在浏览器中返回上一页时,如果上一页有提交操作和弹框,弹框会重现。为避免这种情况,可以使用window.location.replace(document.referrer)来返回上一页并刷新,从而消除之前的弹框状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

history.back()是在浏览器缓存中读取数据,后退到上一页保持原状态。但是如果上一页刚提交了什么东西,有弹框提示的话,那么在返回的时候,弹框会再次显示。

js方法解决:
可以将window.history.back()替换为

window.location.replace(document.referrer)

在大多数情况下,可以理解为返回上一页并刷新。

为了实现前端跳转后返回时不刷新页面,通常使用无刷新(Asynchronous or AJAX)技术,其中JavaScript的`window.history.pushState`方法以及`popstate`事件处理是关键。以下是基本步骤: 1. **使用pushState方法**: 在点击按钮或者导航链接时,而不是直接通过`location.href`更改URL,使用`history.pushState`来更新历史记录,同时保持页面内容不变: ```javascript function navigateToNextPage(data) { history.pushState(null, '', '/new-page-url?data=' + encodeURIComponent(JSON.stringify(data))); } ``` 这样,浏览器地址栏显示会变,但实际页面不会重新加载。 2. **监听popstate事件**: 为了让用户离开当前页或按Back键时能回到上一页,需要监听`popstate`事件,在回调中更新页面内容: ```javascript window.addEventListener('popstate', function(event) { if (event.state && event.state.data) { // 解码数据,根据实际情况更新页面内容 var data = JSON.parse(decodeURIComponent(event.state.data)); updatePageContent(data); } else { // 用户可能是直接进入当前页,或从其他非AJAX跳转而来 defaultPageBehavior(); } }); ``` 3. **后退到前一页**: 如果你希望在用户点击浏览器的前进按钮时也能回退,可以在`navigateToNextPage`函数中保存状态: ```javascript function navigateToNextPage(data) { saveCurrentState(); // 保存当前页面的状态以便回去 history.pushState(...); } function saveCurrentState() { localStorage.setItem('currentState', JSON.stringify(currentData)); } ``` 然后在`popstate`事件处理中检查是否有保存的数据来恢复: ```javascript function restorePreviousState() { var savedData = localStorage.getItem('currentState'); if (savedData) { var data = JSON.parse(savedData); // 更新页面内容 } } // 页面加载完成后,检查是否有缓存的回退数据 window.addEventListener('load', restorePreviousState); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值