WebView JavaScript liens travail sur le toucher, mais pas lorsque vous utilisez trackball
Question
J'ai une activité simple à base WebView qui suit le Bonjour, l'exemple de WebView pour permettre shouldOverrideUrlLoading()
JavaScript et la surcharge.
Cette activité fonctionne très bien lorsque l'utilisateur touche des liens sur la page Web. Toutefois, si l'utilisateur utilise la boule de commande et clique sur un lien, la charge de page qui affiche une page avec JavaScript désactivé.
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;
}
});
}
}
Le fichier view_url.xml est simple:
<?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>
Voici quelques captures d'écran montrant à la fois le comportement correct et incorrect.
Cliquez à l'aide Touch (CORRECT):
Cliquez à l'aide Touch (CORRECT) http://img.skitch.com/20090908-g2acnrpb1riuq11ys3p1u6fd4d .png
Cliquez en utilisant trackball (INCORRECT):
Toutes les idées comment je peux résoudre le comportement Trackball être le même que le comportement tactile? Ou au moins permettre à JS lorsque les liens sont cliqués par la boule de commande?
La solution
Il semble que l'exemple « Bonjour, WebView » est cassé. Sur la suggestion de quelqu'un sur le canal IRC, je l'ai enlevé le remplacement de shouldOverrideUrlLoading()
et tout semble fonctionner à merveille.
Code de travail révisé:
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
}
}