Comment puis-je utiliser la journalisation de la console dans Internet Explorer?


119

Existe-t-il un enregistreur de console pour IE? J'essaye d'enregistrer un tas de tests / assertions sur la console mais je ne peux pas le faire dans IE.


8
Fais attention! console.log()ne fonctionne que lorsque l'outil de développement d'IE est ouvert (oui, IE est merdique). voir stackoverflow.com/questions/7742781/…
Adrien Be

1
utiliser un wrapper cross-browser: github.com/MichaelZelensky/log.js
Michael Zelensky

Réponses:


147

Vous pouvez accéder à la console de script IE8 en lançant les "Developer Tools" (F12). Cliquez sur l'onglet "Script", puis sur "Console" sur la droite.

À partir de votre code JavaScript, vous pouvez effectuer l'une des opérations suivantes:

<script type="text/javascript">
    console.log('some msg');
    console.info('information');
    console.warn('some warning');
    console.error('some error');
    console.assert(false, 'YOU FAIL');
</script>

Vous pouvez également effacer la console en appelant console.clear().

REMARQUE: il semble que vous devez d'abord lancer les outils de développement, puis actualiser votre page pour que cela fonctionne.


Ce n'est que pour IE8 +, mais c'est une très bonne console. C'est essentiellement une réplique de Firebug, il manque quelques fonctionnalités avec d'autres ajoutées. Recherchez MSDN pour cela.
ken

2
Ah, même s'il est loin de Firebug, il a encore juste assez de ce dont j'ai besoin. Merci!
ground5hark

1
Lien vers MSDN
Casebash

73
Veuillez noter que dans IE, contrairement à Firefox, si les outils de développement ne sont pas actifs, window.console n'est pas défini et l'appel console.log()sera interrompu. Protégez toujours vos appels avecwindow.console && console.log('stuff');
Guss

1
Au cas où quelqu'un ne le trouverait toujours pas, ne faites pas ce que j'ai fait et essayez de taper votre script dans la partie supérieure de la fenêtre: la zone de saisie est en fait une zone de texte / une barre en bas de la fenêtre Developer Tools Console .
starmandeluxe

24

Depuis la version 8, Internet Explorer possède sa propre console, comme les autres navigateurs. Cependant, si la console n'est pas activée, l' consoleobjet n'existe pas et un appel à console.loggénérera une erreur.

Une autre option consiste à utiliser log4javascript (divulgation complète: écrite par moi), qui a sa propre console de journalisation qui fonctionne dans tous les navigateurs traditionnels, y compris IE> = 5, plus un wrapper pour la propre console du navigateur qui évite le problème d'un indéfini console.


Hah .. Quelques mois, j'ai écrit quelque chose de similaire. Bon travail là-dessus!
tftd le

@Tim Down, il existe une solution de contournement pour cela stackoverflow.com/a/13817235/3057246
Vinod Srivastav

14

Extrêmement important si vous utilisez console.log () en production:

si vous finissez par publier des console.log()commandes en production, vous devez mettre une sorte de correctif pour IE - car il consolen'est défini qu'en F12mode débogage.

if (typeof console == "undefined") {
    this.console = { log: function (msg) { alert(msg); } };
}

[supprimez évidemment l'alerte (msg); déclaration une fois que vous avez vérifié que cela fonctionne]

Voir aussi «console» est une erreur non définie pour Internet Explorer pour d'autres solutions et plus de détails



5

Shim IE7 simple et inférieur qui préserve la numérotation des lignes pour les autres navigateurs:

/* console shim*/
(function () {
    var f = function () {};
    if (!window.console) {
        window.console = {
            log:f, info:f, warn:f, debug:f, error:f
        };
    }
}());

3

Dans son livre, "Secrets of Javascript Ninja", John Resig (créateur de jQuery) a un code très simple qui gérera les problèmes de console.log entre navigateurs. Il explique qu'il aimerait avoir un message de journal qui fonctionne avec tous les navigateurs et voici comment il l'a codé:

function log() {
  try {
    console.log.apply(console, arguments);
  } catch(e) {
  try {
    opera.postError.apply(opera, arguments);
  }
  catch(e) {
    alert(Array.prototype.join.call( arguments, " "));
  }
}

C'est John Resig; vous avez écrit "Resign", LOL
rvighne

1
Il }manque un extrait dans cet extrait. :)
Nighto

2

Pour le support IE8 ou console limité à console.log (pas de débogage, trace, ...), vous pouvez faire ce qui suit:

  • Si console OU console.log non défini: Créez des fonctions factices pour les fonctions de la console (trace, débogage, journal, ...)

    window.console = { debug : function() {}, ...};

  • Sinon si console.log est défini (IE8) ET console.debug (tout autre) n'est pas défini: redirigez toutes les fonctions de journalisation vers console.log, cela permet de conserver ces logs!

    window.console = { debug : window.console.log, ...};

Je ne suis pas sûr de la prise en charge d'assert dans diverses versions d'IE, mais toutes les suggestions sont les bienvenues.



0

Pour les anciennes versions d'IE (avant IE8), il n'est pas simple de voir le journal de la console dans la barre d'outils des développeurs IE, après avoir passé des heures à rechercher et à essayer de nombreuses solutions différentes, enfin, la barre d'outils suivante est un excellent outil pour moi:

Le principal avantage de cela est de fournir une console pour IE6 ou IE7, afin que vous puissiez voir quelle est l'erreur (dans le journal de la console)

  • Remarque:
  • Ce est gratuit
  • capture d'écran de la barre d'outils

entrez la description de l'image ici


0

J'ai toujours fait quelque chose comme ça:

var log = (function () {
  try {
    return console.log;
  }
  catch (e) {
    return function () {};
  }
}());

et à partir de là, utilisez toujours log (...), ne soyez pas trop compliqué en utilisant la console. [avertir | erreur | et ainsi de suite], restez simple. Je préfère généralement une solution simple aux bibliothèques externes sophistiquées, cela porte généralement ses fruits.

moyen simple d'éviter les problèmes avec IE (avec console.log non existant)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.