android——webview動態修改html界面


這里動態修改雖然有點誇張,但是,效果還是達到了。

這里得重點講一下webviewClient的一個方法:shouldOverrideUrlLoading。這個方法太偉大。啥都能拿到。

當點擊某個超鏈接需要跳轉的時候,這個方法也是第一時間響應到了。返回true,則表示不需要它處理,由程序員自己處理,返回false則表示,這個url還得webview自己跳轉。明白這點,就get到了吧。

我們就是要在跳轉到二級界面的時候,來預處理一下二級界面,把二級界面修改修改,再展示給用戶。

問題來了。怎么改?改好了怎么辦?

首先。需要把跳轉時間攔截下來,我這里就世界根據二級界面的url來判斷什么時候攔截。給shouldOverrideUrlLoading返回一個true,表示,這事,你別管了,我來處理。

其次,就是怎么改了。這里我用的是jsoup來獲取html代碼的,也可以采用其他方式,方法很多,我只取一個。這里得開辟一個子線程來操作,畢竟耗時的操作,你敢放在主線程,他就敢拋出異常。

jsoup本身提供了很多方法供你來操作這個界面,本來我是通過select方法得到element后,再使用element的wrap()方法,給這個element外層包裹上一個標簽,給標簽設置一個hidden屬性。效果也達到了。但是,感覺這么操作有點煩。所以,我是直接使用doc.html方法得到html這個string后,用String的replace方法來去除不需要的代碼。

效果都一樣,都達到我的目的。界面改好了。看下圖對比就知道了。當然,為了我底部的廣告部遮擋住這個頁面的底部,我特地在html的后面加了一個空白區域代碼。

 

最后,改好了代碼就是怎么顯示了。當然還是webview的方法啦。

 

webView.loadData(html, "text/html; charset=UTF-8", null);

 

 

 

這就完美了嗎?當然不是,請看后續。。。。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM