js实现浏览器后退按钮失效(包含iframe的后退)

问题:使浏览器后退按钮失效

在业务中出现了这样的需求,用户不能通过浏览器的后退按钮后退到上一界面。这个需求出现的场景很多,比如不希望用户重复提交表单,或者上一页面需要重新从服务器上下载,或者单纯不希望用户可以重复访问上一页面。

解决办法:走一步退一步权当没走

方法简介

网上很多解决方案,我采取了其中一种,就是通过js监视浏览器的后退动作,当监视到浏览器后退时,在浏览器历史记录中添加一页当前页面,然后调用js的history.forward()方法前进一页。之后浏览器再后退就会进入当前页面。至于为什么不是先让浏览器后退,再前进一步呢?其实很简单,我们只能监视浏览器后退之前,然后执行一些操作,这是监视器的本质,我们无法监视后退之后。还有一点,如果先后退再前进会出现两个页面瞬间跳转的情况,画面会出现明显的抖动,用户体验不好。
这个方法在大多数浏览器上有效(但是目前亲测手机UC浏览器不行),而且无论前进和后退都是当前页面,不会出现页面抖动的感觉,基本解决了这个业务需求。如果实在必要,可以搭配限制浏览器使用。如何限制浏览器,请看我另一篇博客《如何限制访问网页的浏览器类型》

history对象

在使用这个方法之前,很有必要了解一下js的history对象,因为这个方法大部分都是在操作这个对象,想要深度学习history对象的学习的朋友可以参考这个网站JavaScript history对象_w3cschool,下面我先简单介绍下用到的history api。

js实现浏览器的前进后退history对象简单用法

js实现添加历史记录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值