WebView JavaScript liens travail sur le toucher, mais pas lorsque vous utilisez trackball

StackOverflow https://stackoverflow.com/questions/1396495

  •  22-09-2019
  •  | 
  •  

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):

Cliquez à l'aide Trackball (INCORRECT) http://img.skitch.com/20090908-my23yxakudwhheq875j2hcwg6h .png

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?

Était-ce utile?

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
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top