我有一个简单的基于WebView的活动,它遵循Hello, WebView示例来启用JavaScript和重载shouldOverrideUrlLoading()。
当用户触摸网页上的链接时,此活动效果很好。但是,如果用户使用轨迹球并单击链接,则结果页面加载将显示禁用JavaScript的页面。
public class ViewUrl extends Activity {
protected WebView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_url);
final String url = "http://www.opentable.com/phone/reviews.aspx?rid=2947";
view = (WebView) findViewById(R.id.widget1);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl( url );
view.setWebViewClient( new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
}
}view_url.xml文件很简单:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/widget1" />
</RelativeLayout>下面是一些屏幕截图,显示了正确和不正确的行为。
单击using Touch (正确):
Click using Touch (CORRECT) http://img.skitch.com/20090908-g2acnrpb1riuq11ys3p1u6fd4d.png
单击使用轨迹球(不正确):
Click using Trackball (INCORRECT) http://img.skitch.com/20090908-my23yxakudwhheq875j2hcwg6h.png
你知道怎样才能让轨迹球的行为和触摸行为一样吗?或者至少在通过轨迹球点击链接时启用JS?
发布于 2009-09-08 22:11:53
看起来"Hello,WebView“的例子坏了。在IRC频道上有人的建议下,我删除了shouldOverrideUrlLoading()的覆盖,一切似乎都很顺利。
修订后的工作代码:
public class ViewUrl extends Activity {
protected WebView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_url);
final String url = "http://www.opentable.com/phone/reviews.aspx?rid=2947";
view = (WebView) findViewById(R.id.widget1);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl( url );
view.setWebViewClient( new WebViewClient() ); // probably not necessary if you don't do anything else with the WebViewClient
}
}https://stackoverflow.com/questions/1396495
复制相似问题