Je travaille sur un projet qui implique Raphaeljs. Il s'avère que cela ne fonctionne pas sur Android. C'est fait sur l'iPhone.
Comment diable-je aller pour déboguer quelque chose sur le navigateur Android? C'est WebKit, donc si je connais la version, la déboguer sur cette version full de WebKit produira les mêmes résultats?
Update: Débogage à distance
Auparavant, la journalisation sur console était la meilleure option pour le débogage de JavaScript sur Android. De nos jours, avec le débogage à distance de Chrome pour Android, nous sommes en mesure de tirer parti de tous les avantages des outils de développement Chrome pour les ordinateurs de bureau sur Android. Consultez https://developers.google.com/chrome-developer-tools/docs/remote-debugging pour plus d'informations.
Mise à jour: console JavaScript
Vous pouvez également naviguer vers about: debug dans la barre d’URL pour activer le menu de débogage et la console d’erreur JavaScript avec les appareils Android récents. Vous devriez voir SHOW JAVASCRIPT CONSOLE en haut du navigateur.
Actuellement dans Android 4.0.3 (Sandwich à la crème glacée), le logcat est envoyé au canal du navigateur. Donc, vous pouvez filtrer en utilisant adb logcat browser:* *:S
.
Réponse originale
Vous pouvez utiliser l'objet JavaScript console
intégré pour imprimer les messages de journal que vous pouvez consulter avec adb logcat
.
console.error('1');
console.info('2');
console.log('3');
console.warn('4')
Produit cette sortie:
D/WebCore ( 165): Console: 1 line: 0 source: http://...
D/WebCore ( 165): Console: 2 line: 0 source: http://...
D/WebCore ( 165): Console: 3 line: 0 source: http://...
D/WebCore ( 165): Console: 4 line: 0 source: http://...
Détermination de la version de WebKit
Si vous tapez javascript:alert(navigator.userAgent)
dans la barre d’emplacement, la version de WebKit est répertoriée, par exemple.
Sous Chrome: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2
Sur l'émulateur Android Mozilla/5.0 (Linux; U; Android 1.6; en-us; sdk Build/DRC76) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
N.B.
Les versions de WebKit ne faisant pas partie d'une version de Safari ont un + après le numéro de version et leur numéro de version est généralement supérieur à celui de la dernière version publiée de WebKit. Ainsi, par exemple, 528+ est une version non officielle de WebKit, plus récente que la version 525.x fournie avec Safari 3.1.2.
Essayer:
alors que sur cette page, dans la barre d'adresse d'un navigateur Android standard, tapez:
about:debug
(Notez que rien ne se passe, mais de nouvelles options ont été activées.)
Fonctionne sur les appareils que j'ai essayés. En savoir plus sur le navigateur Android à propos de: débogage, à quoi servent ces paramètres?
Edit: Ce qui aide également à récupérer plus d'informations, comme le numéro de ligne, est d'ajouter ce code à votre script:
window.onerror = function (message, url, lineNo){
console.log('Error: ' + message + '\n' + 'Line Number: ' + lineNo);
return true;
}
Le http://jsconsole.com (/ http://jsconsole.com/remote-debugging.html ) offre un moyen agréable d'utiliser le contenu de votre page Web.
J'utilise Weinre , une partie de Apache Cordova .
Avec Weinre, je reçois la console de débogage de Google Chrome dans le navigateur de mon ordinateur de bureau, je peux connecter Android à cette console de débogage et déboguer HTML et CSS. Je peux exécuter des commandes Javascript dans la console, qui ont une incidence sur la page Web du navigateur Android. Les messages de journal d'Android apparaissent dans la console de débogage du bureau.
Cependant, je pense qu'il n'est pas possible d'afficher ou de parcourir le code Javascript réel. Donc, je combine Weinre avec des messages de journal.
(Je ne sais pas grand chose à propos de JConsole mais il me semble que l'inspection HTML et CSS n'est pas possible avec JConsole, uniquement des commandes Javascript et la journalisation (?).)
Jetez un oeil à jsHybugger . Cela vous permettra de déboguer à distance votre code js pour:
Comment cela fonctionne (plus de détails et d’alternatives sur le site des projets, c’est ce que j’ai trouvé être la meilleure solution).
Encore une fois, avec Chrome sous Android, utilisez l’extension ADB sans jsHybugger. Je pense que cela a déjà été décrit dans la réponse acceptée à cette question.
Pour info, la raison pour laquelle RaphaelJS ne fonctionne pas sur Android est qu’Android Webkit (contrairement à iPhone Webkit) ne prend pas en charge le format SVG pour le moment. Ce n'est que récemment que Google est parvenu à la conclusion que la prise en charge SVG par Android était une bonne idée et qu'elle ne serait donc pas disponible avant un certain temps.
Débogage à distance complet du navigateur natif Android sur un Galaxy S6 sous Android 5.1.1:
Les appareils Galaxy S5 apparaissent dans Chrome, mais les onglets ne s'affichent qu'après le redémarrage. Après le redémarrage et la tentative de connexion, le navigateur mobile se bloque.
Raphael n’est pas pris en charge sur les navigateurs Android antérieurs à la version 3.0, c’est votre problème. Ils ne supportent pas les graphiques SVG. Il a cependant un support pour la toile. Si vous n'avez pas besoin de l'animer, vous pouvez rendre les graphiques avec canvg:
http://code.google.com/p/canvg/
C'est ainsi que nous avons résolu ce problème en rendant les icônes SVG dans le navigateur Android par défaut.
Le about:debug
(ou chrome:\\debug
indiquant que la page est introuvable, mais activez le menu Débogage dans les paramètres) lorsque vous essayez sur Chrome ou Opera sur Android KitKat 4.4.2 sur un Samsung Tab
Si vous disposez d'autorisations ROOT sur votre appareil, vous pouvez afficher les messages de la console directement sur l'appareil. Utilisez une application telle que CatLog pour afficher la sortie du journal - https://play.google.com/store/apps/details?id=com.nolanlawson.logcat&hl=fr Ceci vous permettra d'afficher toute l'activité de logcat.
Dans Android KitKat/4.4.2, la console du navigateur est émise vers le canal Chromium. Vous pouvez filtrer par "Chrome" pour obtenir toutes les activités du navigateur (y compris l'activité interne du navigateur) ou simplement par "Console" pour afficher uniquement le journal de la console du navigateur.
chromium [INFO:CONSOLE(3)] "The key "x-minimal-ui" is not recognized and ignored.", source http://mywebsite.com/ (3)
Mettez dans la ligne d'adresse chrome://about
. Vous verrez des liens vers toutes les pages de dev possibles.
Ma solution est (pour le navigateur stock):
Vous pouvez essayer YConsole a js console intégrée. Il est léger et simple à utiliser.
Comment utiliser :
<script type="text/javascript" src="js/YConsole-compiled.js"></script>
<script type="text/javascript" >YConsole.show();</script>
Lorsque vous exécutez l'émulateur Android, ouvrez votre navigateur Google Chrome et, dans le "champ d'adresse", entrez:
chrome://inspect/#devices
Vous verrez une liste de vos cibles distantes. Trouvez votre cible et cliquez sur le lien "inspecter".
Vous pouvez essayer "javascript-compiler-deva" à partir de la bibliothèque npm en exécutant la commande "npm install javascript-compiler-deva" puis en exécutant compiler.is à l'aide de "node compiler.js".
Il crée un serveur sur le port 8888. Vous pouvez ensuite cliquer sur " http: // localhost: 8888 " pour entrer votre code JavaScript et voir le résultat de tout code JavaScript, y compris "console.log" dans le navigateur même du téléphone.
Il est également hébergé dans " https://javascript-compiler-deva.herokuapp.com/ "
Si vous recherchez des options non distantes:
Sur les versions précédentes et non rootées de Jellybean, un visualiseur logcat peut être utilisé si Android.permission.READL_LOGS est accordé via adb une fois.
Sur firefox, il existe un module console qui lit et affiche tous les journaux des applications, ainsi que firebug lite .
Android studio fournit tout ce dont vous avez besoin pour voir console.log et autres. Dans logcat, il suffit de filtrer sur "/ Web Console" et vous verrez vos journaux js ...
Si vous rencontrez un problème, vous pouvez ajouter ce plugin: https://github.com/Apache/cordova-plugin-console
Chrome possède une fonctionnalité merveilleuse qui prend simplement le contenu réel Android Chrome (y compris l'inspection, etc.) sur l'écran du PC ...
adb devices
pour déclencher le dialogue "Autoriser la communication avec ..." sur l'appareil mobile.chrome://inspect/#devices
sur le PC.Un manuel détaillé est également disponible sur le net: https://www.till.net/technologie/html-javascript/remote-web-debugging-unter-Android-und-chrome
(constaté qu'après adb logcat
, rien dans le navigateur)