内置浏览器返回键重定向问题解析

原创 2016年05月30日 18:46:50
1、目前android端物理硬件返回键与左上角返回键处理基本一致,都是调用webview中的goback方法。
      好处:可以满足大部分的网页后退与关闭。
      不足之处:个别网页会因为重定向问题无法返回之前的页面
                        解决方案:不是必需重定向的页面,去掉重定向。如果是必需要重定向的页面,客户端需要自己维护一个历史栈,同时需要前端通过JS告诉客户端哪个是重定向的页面。这样客户端后退时自行过滤掉重定向的页面。当然以上的方案只能解决咱们自己写的页面,其他第三方的页面无法处理的。而另外一种比较通用的、实现成本小的办法就是“增加关闭按钮”。咱们目前采用的就是这种方案。像微信,微博也只能是用这种。
       此方案另外一个问题:H5页面弹出的浮层无法不掉。(这个问题下面有解决方案)
 2、IOS的处理机制是这样的:左上角的返回键调用的是H5的goback方法,根据goback方法的返回值true/false进行判断。是关闭啊还是什么也不操作,由H5来返回上一级页面。
       
      我说一下我对这种方案的想法:从整体上的设计,我觉得不妥。你想:我调用我自己的返回值,我知道要操作什么,我也有能力操作,我还得请求一下H5,然后由H5去返回。然后我还得知道返回值,来决定我的下一步操作,很奇怪。如果说特定的页面,为了实现功能,几个页面的话,我可以特殊这么处理倒可以。但是整体设计都用这种的话,我觉得不太妥当 。
      
      优点:实现了所有的功能要求。H5中部分页面弹出的浮层自己也能关掉了
      缺点:一旦哪个页面加载到了其他第三方的H5页面,那么可能无法关闭或无法返回(根据编码写法不同)

3、如果android端同步使用IOS的处理方案。
      1、首先系统版本4.4以下的机器 ,可以调到H5的goback方法,但是收不到返回值。所以无法处理下一步的操作。通常都是到一级界面,无法返回了。此时还是得使用“关闭按钮”。
      2、如果采用这种方案,那么一旦哪个页面加载到了其他第三方的H5页面,那么可能无法关闭或无法返回


综上所述,我认为IOS可以保持不动。android端的处理方案为:
         android的物理返回键不动,仍然是调用webview自己的返回键。左上角的返回键方案:
          第一步:事先约定好客户端点击返回的时候,需不需要通知H5。如果有些页面需要通知H5,则可在URL中配置相关的参数isGobackNotified=true;          
          第二步:客户端点击返回键,判断当前URL是否需要通知H5,如果需要的话,则通知一声。然后H5根据通知来决定自己的操作,比如:关闭浮层等。
          第三步:后退和关闭操作由客户端处理。
      
      此方案优点:解决了H5的弹出浮层的BUG,同时也可以进行后退和关闭。
      此方案缺点:听H5童鞋说,实现起来不容易。

     方案二:如果说非要使用调用H5 goback的方案的话
       那么 android可以这样解决这个问题:
       4.4以上的版本可以正常解决。
       4.4以下的版本,返回到一级界面的时候,则可通过“关闭按钮”或物理返回键返回
      
      但这种方案,无论android与ios都存在的问题是:如果打开的是第三方的H5的话,无法返回或无法后退
       方案三:    android端不区分版本处理,客户端调用H5的goback方法,然后H5端通过JS回调客户端的特定方法。然后客户端进行下一步的操作。


                                                      

相关文章推荐

解决网页重定向带来的无法返回的问题

解决网页重定向带来的无法返回的问题

浏览器返回按钮不会刷新页面解决方案

iOS开发笔记--URL重定向 URL redirect

今天分享一下iOS应用中URL地址如何重定向 就用一个很简单的例子 http://www.google.com谷歌的首页 都知道现在浏览器中打开google.com的话事实上会变...

页面跳转与重定向(之一)

html ,js 可以实现页面跳转。 jsp , asp, php 也有各自页面跳转与重定向的方式。 下文针对js 和jsp 的页面跳转实现方式进行一个总结。...
  • oscar999
  • oscar999
  • 2014年02月10日 18:02
  • 102738

微信浏览器左上角返回按钮的监听

问题描述1:微信开发的时候,在公众号菜单中打开一个H5页面(如:个人中心),在这个页面上的一些操作,经过多次跳转后,点击左上角的返回按钮,发现会原封不动的返回至上一级页面。即 公众号菜单->A->B-...

H5中 JS 禁用安卓手机物理返回键 , 微信浏览器中也支持

XBack = {}; (function(XBack) { XBack.STATE = 'x - back'; XBack.element; XBack.onPopState = ...

微信企业号关注二次验证配置详细讲解-Java

上个星期有几个朋友叫我出一篇关于微信企业号二次验证的教程,苦于前段时间没时间就没写,今天晚上不上班,就给大家 发一篇福利吧,我们先来看看微信官方的API文档怎么说 二次验证 企业...
  • jspping
  • jspping
  • 2014年10月25日 18:13
  • 8650

java 解决微信不能重定向resposne.sendRedirect的问题

以前一个二维码控制两种下载渠道是这么玩的:通过resposne.sendRedirect跳转,结果微信一扫,就被拦截了,好尴尬啊~ /** * 二维码下载两种app * @param req...
  • xb12369
  • xb12369
  • 2015年09月10日 19:24
  • 5490

web四大内置对象及转发重定向的基本区别

Web中jsp四大对象 重定向:发生在客户端,请求发送多次,地址栏不会改变,不能共享上一次的request内的数据; 转发:发生在服务器,请求只发生一次,地址栏不会改变,能共享上一次的request...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内置浏览器返回键重定向问题解析
举报原因:
原因补充:

(最多只允许输入30个字)