1. 程式人生 > >Webview獲取連續H5頁面的title,並解決回退時title不變的問題

Webview獲取連續H5頁面的title,並解決回退時title不變的問題

在應用中,有的頁面會使用h5來實現,而title確是客戶端來實現的,正確的獲取h5的標題,設定正確的title

是必須的。

這個在webview中通過api很容易實現。只需要呼叫這個方法就可以了。

mWebView.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
                Log.v(TAG,"title:"+title);
            }
        });

這樣的確可以實現設定標題,但是問題來了,你會發現當H5不斷的開啟,你的標題也跟著相應變化,但是當你點了back鍵後,頁面不斷的回退,但是標題確沒有任何變化,開啟log,原來返回的時候根本沒有走onReceivedTitle這個方法。

這個時候,我們可以藉助集合來解決這個問題,記錄每個網址對應的title,然後在onpagefinish中進行設定。

  1. //記錄URL和title
  2.     private String mCurrentUrl;  
  3.     private Map<String,String> titles = new HashMap<String,String>();  
  4.     mWebView.setWebViewClient(new WebViewClient(){  
  5.             @Override
  6.             publicboolean shouldOverrideUrlLoading(WebView view, String url) {  
  7.                 mWebView.loadUrl(url);  
  8.                 returntrue;  
  9.             }  
  10.             @Override
  11.             publicvoid onPageStarted(WebView view, String url, Bitmap favicon) {  
  12.                 super.onPageStarted(view, url, favicon);  
  13.                 Log.v(TAG,"start:"+url);  
  14.                 mCurrentUrl = url;  
  15.             }  
  16.             @Override
  17.             publicvoid onPageFinished(WebView view, String url) {  
  18.                 super.onPageFinished(view, url);  
  19.                 Log.v(TAG,"finish:"+url);  
  20.                 String title = titles.get(url);  
  21.                 if (!TextUtils.isEmpty(title)){  
  22.                     mTitle.setText(title);  
  23.                 }  
  24.             }  
  25.         });  
  26.         mWebView.setWebChromeClient(new WebChromeClient(){  
  27.             @Override
  28.             publicvoid onReceivedTitle(WebView view, String title) {  
  29.                 super.onReceivedTitle(view, title);  
  30.                 Log.v(TAG,"title:"+title);  
  31.                 if (TextUtils.isEmpty(title)){  
  32.                     title = "";  
  33.                 }  
  34.                 titles.put(mCurrentUrl,title);  
  35.             }  
  36.         });  
好了,這樣,在onpagestart中記錄url,在onpagefinish中從集合中取出,這樣就解決了問題。

相關推薦

Webview獲取連續H5頁面的title,解決退title的問題

在應用中,有的頁面會使用h5來實現,而title確是客戶端來實現的,正確的獲取h5的標題,設定正確的title 是必須的。 這個在webview中通過api很容易實現。只需要呼叫這個方法就可以了。 mWebView.setWebChromeClient(new We

RN系列之三十六WebView 中載入h5頁面邊框為白框的問題解決

1.如果直接使用RN提供的WebView元件,如果h5是一個不太規則的網頁效果顯示,會遇到以下的面情況。 修改策略,在原生的ReactWebViewManager.java類中的內部類設定Reac

curl連續請求頁面卡死解決辦法

今天專案中遇到一個問題就是在後臺用curl請求資料,連續請求url連結後頁面會卡死502錯誤,最後解決辦法是在 curl請求方法中加了CURLOPT_TIMEOUT就可以了,這樣如果超出設定時間不影響頁面其他的請求,到了設定時間請求也會停止 curl方法如下: function g

移動端H5頁面生成圖片解決方案

現在有很多微信公眾號運營活動,都有生成圖片的需求,生成圖片後可以傳送給好友和發到朋友圈擴散,利於產品的宣傳! 1. 生成圖片可以用canvas,但是由於已經有了html2canvas這個開源庫,所以為了節省時間就沒有自己寫了 少囉嗦,先看東西!!! /

Webview/X5WebView載入H5頁面中的圖片顯示問題

一、問題描述:在android4.4的手機上是可以顯示H5頁面中的圖片,但測試機為android 6.0,7.0,8.0,就不行。        我的H5的地址是:https://www.abc.com/new/103        我的H5中的圖片地址:http://1

java單例模式解決懶漢式下執行緒安全的問題

單例模式中分為懶漢式和餓漢式 其中,懶漢式是執行緒不安全的,當有多條執行緒同時訪問單例物件時,則會出現多執行緒臨界資源問題。 現在用多執行緒實現並解決執行緒安全問題 餓漢式 public class SigletonDemo01 { static Ha

FloatingActionButton屬性、用法,以及解析解決sdk25以上只隱藏顯示的問題

懸浮按鈕(FloatingActionButton),在下文簡稱fab,今天我們來講講它的一些屬性與用法,以及解析並解決sdk25以上FloatingActionButton只隱藏不顯示的問題。 先展示一下動態圖 本次開發環境基於sdk25. 使用之前

Redmi K20 Pro 安裝谷歌三件套,解決退問題

其實 MIUI 2.5G 已經內建谷歌三件套了 我們只需要到小米應用商店裡面去搜索 Google Play 商店, 然後安裝更新 Google Play 就可以通過科學shangwang(不要問我什麼是kexue上網,不懂問度娘), 登陸 Google Play 商店了 如果出現使用 Youtube 等應用的

eclipse-java-2018-09-win32-x86_64配置tomcat(內含更新eclipse,如何解決添加到最新tomcat版本)

圖片 pla 其他 內容 ava serve pre .com bsp 我下的是eclipse精簡版,建議下載企業版,可以省略後面的很多步驟(其中的辛酸。。。) 這裏就是說明下載精簡版的eclipse如何配置tomcat的步驟,其實還是更新eclipse的步驟 1、首先點擊

退上一個頁面如何保證之前的資料還在,即退重新整理頁面

最近寫頁面跳轉時遇到一個小問題,頁面A如下: 當點選操作按鈕時進入下面這個頁面, 點選返回,回退到上一個頁面時,如下: 之前選擇好的業務型別本該回顯的,沒了。網上查了一下,是js程式碼的問題,我的js程式碼在回退操作中是這麼寫的                  

Extjs 解決grid分頁資料

在使用分頁時,前天程式碼基本沒錯,但是分頁就是不成功,而是一直是不變化,全部載入 原因是沒有搞懂怎麼分頁的 Extjs分頁是根據store.load({params:{start:0,limit:10}}); 中start,limit這兩個引數來進行分頁的。 start表示

解決因為手機設置字體大小導致h5頁面webview中變形的BUG

大小設置 解決方法 實的 rep style () window 出現 是你 首先,我們做了一個H5頁面,在各種手機瀏覽器中打開都沒問題。我們采用了rem單位進行布局,通過JS來動態計算網頁的視窗寬度,動態設置html的font-size,一切都比較完美。 這時候,你自

Android使用WebView載入H5頁面播放視訊音訊,退出後還在播放問題解決

Android中經常會使用到WebView來載入H5的頁面,如果H5頁面中有音訊或者視訊的播放時,還沒播放完就退出介面,這個時候會發現音訊或者視訊還在後臺播放,這就有點一臉懵逼了,下面是解決方案: 方案一: 在webview所在的activity中的on

HTML5頁面被運營商DNS劫持問題及解決方案,app中h5頁面原始碼的獲取

App應用的html5頁面經過運營商的行動網路(非wifi網路),被強制插入廣告和手機管家的多餘資訊,在有些場景嚴重干擾使用者的操作,也產生在美麗的頁面上加入了不協調的懸浮層。並且這個手機管家類的懸浮層有時間出現,有時間不出現,神出鬼沒,雖然你可以通過點選關閉手

android用webview載入H5頁面出現點選事件失效的問題解決

不論點選還是標籤連結都失效,反覆查閱,可能性方法試了又試最終解決。總結下:1.開啟js支援2.webview 設定WebChromeClient3.websetting和webviewclientimport android.os.Bundle; import androi

解決app內嵌h5中ios獲取title,vue router 修改title(IOS 下動態改變title失效)

在ios下app  設定document.title = "titleName" 失效,原因是在IOS webview中網頁標題只加載一次,動態改變是無效的。 vue中npm install  vue-wechat-title元件 在路由配置中新增  meta物件 如:

webview 載入H5頁面音樂會自動播放問題解決方案

有公司在我們app上面投廣告,發現他們的h5頁面音樂不會自動播放。 經過幾番折騰,確認以下方案可用。 1.開啟js支援 WebSettings setings = mWebView.getSettings(); setings.setJavaScr

Android WebView 獲取頁面 Title 的正確姿勢

現在 Android 開發中用到 WebView 的地方越來越多,開發中經常會遇到 WebView 的坑,這裡先轉載二篇很好的文章,WebView 開發時如果遇到了問題可以先去這二篇文章裡面看看。 閒話扯完,下面進入正題。 在 APP 中,根據 H5 頁

解決因為手機設定字型大小導致h5頁面webview中變形的bug

首先,我們做了一個H5頁面,在各種手機瀏覽器中開啟都沒問題。我們採用了rem單位進行佈局,通過JS來動態計算網頁的視窗寬度,動態設定html的font-size,一切都比較完美。 這時候,你自信滿滿的將h5地址交給了APP工程師,做了一個WEBVIEW巢狀,然

H5頁面背景圖被鍵盤擠壓移動了位置解決方法

window .com nbsp mage .cn 最終 png 判斷 tro body{width:100%,height:100%},下圖藍色背景放在body裏面。我這個是微信端打開的H5鏈接 問題:手機要輸入手機號或者密碼,會彈出手機的鍵盤,然後就變成下圖。鍵盤背景圖