Webview標題問題

如果打開一個未知的連接,獲取WebView當前頁面的標題,可能通過對WebChromeClient.onReceivedTitle()方法的重寫來實現:

   public class MyWebClient extends WebChromeClient {
        @Override
        public void onReceivedTitle(WebView view, String title) {
            super.onReceivedTitle(view, title);
            if(view.canGoBack())
            {
                setTitle(view.getTitle());
            }else{
                if (StringUtil.valid(CommonWebActivity.this.title)){
                    setTitle(CommonWebActivity.this.title);
                }else {
                    setTitle(view.getTitle());
                }
            }
        }
}

mWebView.setWebChromeClient(new MyWebClient());

首先,判斷canGoBack,是判斷當前頁面是否是瀏覽器裏面加載的第一個頁面,如果是那麼就是false,而二級跳轉頁面則會是true。這樣我們可以爲第一個頁面指定標題,如果爲空的話,用webview自身獲取到的標題即view.getTitle()。二級頁面會使用自身獲取到的標題。

但是對於有些手機從二級頁面回來的時候會把二級頁面的標題覆蓋第一個h5頁面標題,那麼解決這個問題的辦法如下:

mWebView.setWebViewClient(new WebViewClient() {   
 @Override   
 public void onPageFinished(WebView view, String url) {
            setTitle(view.getTitle());      
 }  
}); 
重寫WebViewClient類裏面的onPageFinished方法,然後setTitle(view.getTitle())就好了。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章