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

原创 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回调客户端的特定方法。然后客户端进行下一步的操作。


                                                      

【webView重定向】遇到的坑

缘由: 项目开发中用,不是所以界面都需要原生开发,也有一部分会用到H5。下面说的问题就是因为项目webView加载H5造成的。 现象: 1、打开一些网页,正常,而有一些就不正常; 2、...
  • knockheart
  • knockheart
  • 2017年03月07日 09:37
  • 1877

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

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

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

解决网页重定向带来的无法返回的问题
  • Tracy_ZXD
  • Tracy_ZXD
  • 2017年04月19日 15:35
  • 1034

android WebView 加载重定向页面无法后退解决方案

项目中需要用webView加载第三方的web页面
  • lastdream
  • lastdream
  • 2014年10月27日 19:35
  • 21450

android WebView 加载重定向页面无法后退解决方案

项目中需要用webView加载第三方的web页面
  • lastdream
  • lastdream
  • 2014年10月27日 19:35
  • 21450

SpringMVC请求转发与重定向以及视图与数据的返回

项目配置的viewResolver
  • qq_33082731
  • qq_33082731
  • 2017年07月12日 14:07
  • 2535

H5APP中监听返回事件处理

在使用MUI框架的时候,我们经常会用到一个头部带有.mui-action-back的class ...
  • a250758092
  • a250758092
  • 2017年06月14日 17:17
  • 2423

使用 JavaScript 实现 iframe 判断和页面重定向

转自:http://blog.jamespan.me/2015/01/12/redirect-with-js/index.html 背景 今天我突然发现 Google 已经能够索引我的博客...
  • chelen_jak
  • chelen_jak
  • 2015年04月18日 09:35
  • 4361

读取请求参数、向页面传值、重定向

读取请求参数值 方式一 通过request对象 方式二 通过 @RequestParam注解 方式三 封装成javabean step1. 写一个java类,要求见图示: step2....
  • wangqing84411433
  • wangqing84411433
  • 2017年06月01日 21:42
  • 911

Android中WebView加载Url时出现域名连接重定向时返回控制死循环的问题

Bug时时有,今天特别多。 你们有试过加载WebView由于H5 CSS样式中有特殊属性“minimal-ui”无法识别加载不出来的情况么,你们有过在解决完一个问题之后又出来内外一个问题的时候...
  • pimian13611397598
  • pimian13611397598
  • 2017年02月10日 18:20
  • 1149
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内置浏览器返回键重定向问题解析
举报原因:
原因补充:

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