实现效果:监听在浏览器中是否有还有页面可以返回,如果没有返回跳转至指定页面。
前言:在移动端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,以及微信跳转至外部浏览器打开,都没有问题,如果有什么问题或者有其他更简便的方法希望各位大佬不吝赐教。谢谢