web-dev-qa-db-fra.com

Comment puis-je voir les erreurs Javascript dans WebView dans une application Android?

J'essaie d'exécuter javascript dans WebView dans une application. Je développe sur Nexus 7.

Le html/javascript fonctionne bien sur Chromium, mais certaines actions ne se produisent pas sur la tablette. Existe-t-il un moyen de voir si le javascript lui-même échoue sur la tablette? Une sorte de vue console?

32
interstar

Vous pouvez réellement recevoir les messages de la console à partir d'une WebView, ce qui vous permettrait de détecter les erreurs qu'elle génère.

Faire cela:

  1. Activez JavaScript sur votre WebView
  2. Définissez un WebChromeClient
  3. Remplacer onConsoleMessage

Exemple:

    final WebView webView = (WebView) findViewById(R.id.webview_terms_conditions);

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
            Log.d("MyApplication", consoleMessage.message() + " -- From line "
                    + consoleMessage.lineNumber() + " of "
                    + consoleMessage.sourceId());
            return super.onConsoleMessage(consoleMessage);
        }
    });

    webView.loadUrl(getString(R.string.url_terms_conditions));

Similaire à ce qu'il dit ici , bien que ce document ne soit pas complet et qu'il utilise une méthode déconseillée.


Lors de l'exécution sur Android KitKat, vous pouvez également activer le débogage à distance!

32
RominaV

Vous pouvez utiliser Remote Debugging WebViews

Débogage à distance Chrome Devtools

Plus d'informations

Déboguez les WebViews dans vos applications Android Android en utilisant Chrome Developer Tools.

Sur Android 4.4 (KitKat) ou version ultérieure, utilisez DevTools pour déboguer le contenu WebView dans les applications natives Android Android.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat) {
    WebView.setWebContentsDebuggingEnabled(true);
}

Tapez chrome: // inspecter dans le navigateur pc enter image description here

7
Ahmad Aghazadeh

Vous pourrez peut-être utiliser Firebug lite . C'est juste un bookmarklet pour que vous puissiez l'ouvrir sur n'importe quelle page.

Veuillez également rechercher de nombreuses autres questions similaires:

2
sachleen