最近做的一個Android項目需要用到瀏覽器頁面跳轉追蹤,即在webview裏打開一個頁面後,頁面自己的跳轉導致的地址欄變化等需要記錄。如果是單純的webview那就簡單了,webviewClient裏就有現成的方法跟蹤記錄頁面的變化,如
public boolean shouldOverrideUrlLoading(WebView view, String url)
public void onPageStarted(WebView view, String url, Bitmap favicon)
public void onPageFinished(WebView view, String url)
但是我這種情況比較特殊一點,項目用的phonegap搭的框架,也就是說webview和webviewclient都是固定的了,不能再重寫方法,這個時候childbrowser就派上用場了。
childbrowser名爲子瀏覽器,額,其實我也不想去費神粘貼官方的介紹了,我想呢,在已有的webview裏新啓動一個頁面,要是用新的webview來顯示頁面這樣是不合法的,因爲Android的線程機制決定了改變UI一定要在一個線程裏,所以childbrowser就像是一個外掛,在已有的機制下鑽了空子,另起了一個線程顯示新頁面而沒有被系統察覺。
以下是使用方法。
1,下載一個childbrowser文件包,裏面的東西有這麼三樣,一是ChildBrowser.java,二是ChildBrowser.js,三是放圖片的ChildBrowser文件包這個要是不顯示地址欄就可以不用。
2,把com.phonegap.plugins.childBrowser這個包直接粘貼到項目src下,並在configue.xml裏註冊上插件名稱
<plugin name="ChildBrowser" value="com.phonegap.plugins.childBrowser.ChildBrowser"/>
3,接下來就是js的使用了,在需要使用的頁面裏引入childbrowser.js。
<script charset="utf-8" type="text/javascript" src="childbrowser.js"></script>
4,使用childbrowser打開新頁面,第二個參數表示不顯示地址欄。
window.plugins.childBrowser.showWebPage(url, { showLocationBar: false});
追蹤頁面地址的變化
window.plugins.childBrowser.onLocationChange
= function(loc){
loc就是瀏覽器地址欄
}
關閉childbrowser
window.plugins.childBrowser.close();
經驗與不足:
childbrowser其實就是一個寫好的瀏覽器插件,用法上與其他的plugin並沒有區別,而且還可以在childbrowser.java裏盡情修改,時間關係我就沒細看了。有一個不足的地方,childbrowser啓動後直接佔了全屏了,把我的應用蓋得一點都看不到,應該修改下讓childbrowser與四周有些間距纔好。
以上。