javascript - Comment déboguer le navigateur Silk sur le Kindle Fire ?


Je rencontre un comportement JavaScript différent lorsque j'exécute mon site sur Kindle Fire par rapport à Chrome. Pour déboguer cela, j'ai besoin d'accéder à quelque chose comme l'outil de développement Chrome ou Firebug. Des suggestions ?

Réponse #1

Dans le même bateau ici... j'espérais que adb logcat aiderait, mais les messages de la console Javascript ne semblent pas apparaître là. Peut-être qu'il y a quelque chose qui doit être configuré sur l'appareil pour diriger les journaux de la console vers logcat ?

éditer : trouvé une solution décente : http://jsconsole.com -- permet de configurer une console de débogage/consignation à distance. Assez simple (consignation dans la console seulement, donc vous devrez jeter beaucoup de données dans les journaux)... mais ça fonctionne bien. M'a aidé à traquer la source de mes problèmes, au moins !

comment-faire : http://jsconsole.com/remote-debugging.html

Réponse #2

J'ai adopté une approche différente et créé une application native enveloppante qui affiche une boîte de dialogue pour JavaScript.

Mon code d'encapsulation est plutôt volumineux, alors j'ai pris un extrait des parties pertinentes. Il fonctionne réellement et affichera TOUTES les erreurs JavaScript.

// registers the debugger to catch errors 
WebView engine = (WebView) findViewById(R.id.web_engine);
engine.setWebChromeClient(new DebugClient(this));

// the class that manages the errors
private class DebugClient extends WebChromeClient {
        Activity activity;

        public DebugClient(Activity activity) {
            this.activity = activity;
        }

        @Override
        public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
            if (consoleMessage.messageLevel() == MessageLevel.ERROR
                    || consoleMessage.messageLevel() == MessageLevel.WARNING) {
                String title="Javascript error on line "
                        + String.valueOf(consoleMessage.lineNumber())
                        + " of " + consoleMessage.sourceId();
                AlertBox alertBox=new AlertBox(activity, (ActionListener)null, title, consoleMessage.message(), "OK");
                alertBox.show();
                alertBoxes.add(alertBox);
            }
            return true;
        }
    }

Pour compiler cela, vous devrez installer le SDK Android sur votre ordinateur, et probablement un IDE Java (Eclipse?) avec ADT. Ensuite, il vous suffit de : créer un nouveau projet, ajouter un composant WebView dans votre layout/main.xml, et coller le code. Compilez et installez sur votre Kindle Fire.