移动端返回上一页怎么判断

开发app webview的时候遇到这样的需求,同一个页面,有不同的打开方式(链接跳转与新的webview打开),在改页面点击返回按钮的时候,需要做不同处理,

比如新打开的这个页面是A页面

两种打开方式

  打开方式一:点击B页面的链接跳转到A页面,点击返回,返回到B页面

  打开方式二:用新的webview打开A页面,点击返回,关闭当前webview

关键点是如何判断A页面的来源,解决方案是:

1、最简单的方式是根据不同的打开方式,给A页面传递不同的参数

  缺点是当前落地页(A页面)需要配置两个链接来判断来源

2、还有就是用document.referrer获取url历史记录上一条链接来判断,当前页面是否可回退

  缺点是hash与search变化不会被document.referrer捕获到,如果是vue类hash切换跳转页面降无法判断

  referrer当然也有获取不到的时候,这个时候就尴尬了。有哪些情况呢?

    1.直接在浏览器中输入地址
    2.用location.reload()、location.href()、location.replace()等刷新页面
    3.扫码进入微信或QQ浏览器
    4.直接新窗口打开一个页面
    5.meta标签来控制不让浏览器发送referer <meta content="never" name="referrer">
3、通过popstate事件监听历史记录的变动。事件对象的state属性返回history 实体,判断是否有上一页。

参考链接:

1、如何获取url访问历史记录

2、document.referrer

3、使用history.length判断是否有上一页面,如果没有就返回到指定页面 只能判断一部分

原文地址:https://www.cnblogs.com/fqlGlog/p/10027528.html