监听在浏览器中是否有还有页面可以返回

实现效果:监听在浏览器中是否有还有页面可以返回,如果没有返回跳转至指定页面。

前言:在移动端H5开发的时候,经常会出现在微信浏览器打开的页面,然后选择在浏览器打开后,在浏览器中返回按钮不生效的问题,比如:在微信浏览器打开一个商品详情页,然后选择在浏览器打开商品详情页,之后详情页的返回就失效了,那是因为在浏览器打开的时候是相当于默认打开一个新的页面,它没有上级页面可以返回,所以就会让人感觉返回失效了,再比如:现在的移动项目,经常有分享打开某某页面,或扫码打开某某页面,这样打开的页面返回基本都是失效的,所以,我们希望在这种情况打开的页面可以返回我们的指定页面(如首页或个人中心等)。

 一、第一种方式

从百度随便找的,好几年前写的了,通过判断history.length的 数量来判断是否可以返回,没有返回就跳转至指定页面

原文链接:https://blog.csdn.net/yuxuemu/article/details/77801558

我说下缺点:1、手机微信选择在浏览器打开的时候history.length的值是1,而pc浏览器打开的值是2,因为浏览器打开前会有默认主页

2、history.length的值的不确定性,需要判断不同浏览器的值,而现在的浏览器一大堆,不确定性多

二、第二种方式

通过判断 history.state.back 的值来确定。

我当时是通过打印 history 的值,发现只要有上个页面可以返回,history.state.back 的值就是上个页面的值,当没有上个页面可以返回的时候,像直接在浏览器打开某个页面, history.state.back的值是显示null的,所以,当 history.state.back 有值的时候表示可以返回用

history.back(-1); 

当 history.state.back 的值为 null 的时候就可以返回指定页面了,整体代码大概是这样:

if(history.state.back){//可以返回上一页
					history.back(-1); 
				}else{
					//跳转至指定页面
				}

结尾:第二种方法是我当前用的方法,试过谷歌,360,以及微信跳转至外部浏览器打开,都没有问题,如果有什么问题或者有其他更简便的方法希望各位大佬不吝赐教。谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值