2010-03-29 66 views
0

我有一個webview應區分內部站點鏈接和外部鏈接。我添加一個名爲「#外部」到包含HTML屬性目標=「_空白」用JavaScript來幫助每一個環節URL一個HTML錨和檢查網址WebViewClient的Android Webview + WebViewClient + javascript +硬件輸入

shouldOverrideUrlLoading實現這一行爲

只要用戶在觸摸屏上選擇一個鏈接,此解決方案就可以很好地工作。如果用戶使用硬件輸入法(例如滾動鍵或輸入鍵)選擇鏈接,則請求url中缺少html錨點,因此我的外部鏈接檢測將不起作用。

發生什麼問題的任何想法?

Thx提前, 亞歷

回答

0

我得到了我的應用程序相同的行爲,當你需要使用的網頁上的JavaScript(如果你點擊一個鏈接軌跡球,該事件可能還有更糟沒有傳遞給任何JavaScript偵聽器)。

我發現了兩個解決方案:

- 不要使用shouldOverrideUrlLoading功能,因爲如果你使用它,JavaScript就無法與軌跡球事件工作。你可以使用onPageStarted和onPageFinished方法,但Android可能會打開一個瀏覽器,每次你觸摸一個鏈接,所以你將需要一些創意 javascript的工作來解決這個問題。

- 如果您打算使用某個javascript的webview並仍使用shouldOverrideUrlLoading,則最好禁用軌跡球。

@Override 
public boolean onTrackballEvent (MotionEvent event) 
{ 
     return true; 
} 

我的應用程序具有數字2。

+0

目前我做的3號,忽視行爲,並希望我的用戶完全不使用硬件的投入。 ;) – alexleutgoeb 2010-11-05 22:53:04

+0

哈哈,你可以只是禁用軌跡球和麻煩的按鈕,它不像它是一個默認的Android組件無論如何(也許這就是爲什麼它是越野車)。 – leparlon 2010-11-08 19:14:14