2010-03-29 61 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