Ссылки WebView JavaScript работают при касании, но не при использовании трекбола.
Вопрос
У меня есть простое действие на основе 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>
Ниже приведены несколько скриншотов, показывающие как правильное, так и неправильное поведение.
Нажмите сенсорным экраном (ПРАВИЛЬНО):
Нажмите сенсорным экраном (ПРАВИЛЬНО) http://img.skitch.com/20090908-g2acnrpb1riuq11ys3p1u6fd4d.png
Нажмите с помощью трекбола (НЕПРАВИЛЬНО):
Есть идеи, как я могу исправить поведение трекбола, чтобы оно было таким же, как и поведение сенсорного экрана?Или хотя бы включить JS при нажатии на ссылку с помощью трекбола?
Решение
Похоже, что пример «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
}
}