开发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">
2.用location.reload()、location.href()、location.replace()等刷新页面
3.扫码进入微信或QQ浏览器
4.直接新窗口打开一个页面
5.meta标签来控制不让浏览器发送referer <meta content="never" name="referrer">
3、通过popstate事件监听历史记录的变动。事件对象的state属性返回history 实体,判断是否有上一页。
参考链接:
1、如何获取url访问历史记录
3、使用history.length判断是否有上一页面,如果没有就返回到指定页面 只能判断一部分