安卓wkwebview gobackk会不会刷新页面

下次自動登錄
現在的位置:
& 綜合 & 正文
Android WebView 因重定向無法正常goBack()解決方案
Android WebView 因重定向無法正常goBack()解決方案
首先說下問題,初始頁面為A,點擊某個鏈接跳轉到B(.cn/), B頁面重定向到C頁面(.cn/website/index.html)
當調用webview.goBack()時,頁面回退到B,然後接著會重定向回C頁面.
這樣會導致兩個問題:
1. 無法回退到webview的初始頁面A
2. 無法正常退出Activity或者Fragment(只有還未載入完C時進行回退才能退出頁面)
關於如何解決這個問題,我總結了如下三種方法,可以根據具體情況進行使用:
一. 首先需要和前端開發人員溝通,看重定向是否必要,如果跳轉鏈接只是域名,然後默認重定向到
域名/index.html,並沒有特殊處理的話,那麼這種重定向並沒有意義.
只要將網頁中的連接,比如
直接替換為
即可解決該問題.
二.頁面中的重定向是必須的,那麼我們就需要自己維護一個webview的歷史棧,根據自己的需求進行過濾跳轉或者重新載入頁面:
判斷到當前為重定向後的鏈接,那麼那麼當回退的時候就需要忽略上一級的鏈接,不使用webview.goback(),移除重定向和重定向後的url,
獲取到初始頁面鏈接後自己進行loadUrl()操作.
3.還有一種方法,和方法2類似,需要自己維護webview的歷史棧,但是需要前端的配合,提供js函數獲取網頁是否進行重定向
在webviewClient回調shouldoverloading()中過濾url時,若屬於重定向的地址,則不加入棧中,回退時根據歷史棧載入即可.
這裡主要講一下方法二:
首先定義一個歷史棧 :
把初始頁面Url加入
然後加入載入的url:
最後在webview.goback()處理:
關於載入棧,後來發現webview本身也有對應的API:
不過這個api可能受系統版本的影響或者不同手機系統進行了修改
所以解決該問題時,大家可以自己根據需求,自己維護載入的歷史棧或者直接調用系統api.
這裡總結一下,若重定向非必要,採取方案一,最簡單,修改量也非常小. 重定向必要,則使用方案二或者方案三.
因為需要和前端人員交互,方案三所需要的溝通,開發,維護的成本要比方案二高出不少,但對於是否重定向的判斷非常準確,若有多個重定向的情況,一次開發完成後不需要對代碼再次改動.
方案二則需要寫死需要過濾的url,若出現多個重定向,則會顯得代碼比較臃腫,每次都需要重新增加代碼. 具體使用依據項目中的開發情況而定.
轉載請聲明出處:
&&&&推薦文章:
【上篇】【下篇】查看: 7293|回复: 12
webview中的goback问题
该用户从未签到主题帖子e币
没有eoe的账号,级别还太低,出门如何吹牛逼?
才可以下载或查看,没有帐号?
最近在修改一个项目中webview的bug,在webview中首先显示URL1中的资源,在URL1中点击下一页进入URL2,webview显示了URL2中的资源,可是当我在webview显示URL2的状态下点击返回键(返回键的响应goback()和invaliddate()方法)的时候,webview显示的界面还是在URL2中的状态,但是从logcat的日志中看到其实此时的URL已经是URL1了只是webview的界面还是在URL2的状态,不知道有没有人知道这是怎么回事?该如何解决?
该用户从未签到主题帖子e币
& & 请问你的返回键的事件是如何添加的呢???求教~~~谢谢先~~~
该用户从未签到主题帖子e币
webview是有一个方法?事件可以设定go back 的吧
该用户从未签到主题帖子e币
zpengdtx2008
& & public boolean onKeyDown(int keyCode, KeyEvent event) {
& && &&&if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
& && && && && & mWwbview.goBack();
& && && && &
& && &&&return super.onKeyDown(keyCode, event);
该用户从未签到主题帖子e币
& & 多谢~~~我先试试啊~~~
该用户从未签到主题帖子e币
zpengdtx2008
现在的问题是在模拟器上一点问题都没有,可是一到真机上就会出现那个问题
该用户从未签到主题帖子e币
& & LogCat跟踪了吗???
该用户从未签到主题帖子e币
& & 你好~我按照上面说的做了~为什么点击模拟器上的返回键,还是返回到上一个activity呢???
该用户从未签到主题帖子e币
& & 为什么我的在LogCat输出老是显示:09-17 05:16:38.692: WARN/KeyCharacterMap(2568): No keyboard for id 0
啊?您知道是为什么吗?
该用户从未签到主题帖子e币
zpengdtx2008
& & 我也不清楚,我也是刚接触webview不久,很多问题我也不是很了解
该用户从未签到主题帖子e币
zpengdtx2008
& & 不过你可以看看这篇文章
该用户从未签到主题帖子e币
WebView 的问题确实是个问题,网速、Cache影响速度 。。。
该用户从未签到主题帖子e币
用LogCat查看一下就行了
推荐阅读热门话题
61887420384328284281261252226210208204201192715
半小时前昨天&23:50昨天&14:25昨天&00:35前天&23:59前天&18:41前天&10:35前天&10:133&天前3&天前3&天前3&天前3&天前3&天前3&天前3&天前
Powered byAndroid&WebView的前进、后退、与刷新
mWebView.goBack(); & //后退 &
mWebView.goForward();//前进
mWebView.reload(); &//刷新
//点击后退按钮,让WebView后退一页(也可以覆写Activity的onKeyDown方法)&&&&
&&&&&&&&webview.setOnKeyListener(new&View.OnKeyListener()&{&&&&
&&&&&&&&&&&&@Override&&&&
&&&&&&&&&&&&public&boolean&onKey(View&v,&int&keyCode,&KeyEvent&event)&{&&&&
&&&&&&&&&&&&&&&&if&(event.getAction()&==&KeyEvent.ACTION_DOWN)&{&&&&
&&&&&&&&&&&&&&&&&&&&if&(keyCode&==&KeyEvent.KEYCODE_BACK&&&&webview.canGoBack())&{&&//表示按返回键&&
时的操作&&
&&&&&&&&&&&&&&&&&&&&&&&&webview.goBack();&&&//后退&&&&
&&&&&&&&&&&&&&&&&&&&&&&&//webview.goForward();//前进&&
&&&&&&&&&&&&&&&&&&&&&&&&return&true;&&&&//已处理&&&&
&&&&&&&&&&&&&&&&&&&&}&&&&
&&&&&&&&&&&&&&&&}&&&&
&&&&&&&&&&&&&&&&return&false;&&&&
&&&&&&&&&&&&}&&&&
&&&&&&&&});&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。WKWebView回退不会对页面再次刷新? - 知乎11被浏览2282分享邀请回答24 条评论分享收藏感谢收起}

我要回帖

更多关于 wkwebview goback 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信