207 votes

IE9 prend-il en charge console.log, et c’est une fonction réelle ?

Dans quelles circonstances est `` défini dans Internet Explorer 9 ?

Même lorsque est défini, et `` ne sont pas définis. Pourquoi est-ce ?

[Question connexe pour IE8 : ce qui est arrivé à console.log dans IE8 ?.]

298voto

Andy E Points 132925

Dans Internet Explorer 9 (ou 8), l' console objet est uniquement visible lorsque les outils de développement sont ouverts pour un onglet particulier. Si vous masquer la fenêtre outils de développement pour cet onglet, l' console objet reste exposé pour chaque page, vous accédez. Si vous ouvrez un nouvel onglet, vous devez également ouvrir les outils de développement pour cet onglet pour l' console objet à être exposé.

L' console objet ne fait pas partie de la norme et est une extension du Modèle d'Objet de Document. Comme d'autres objets DOM, il est considéré comme un objet hôte et n'est pas nécessaire d'hériter d' Object,, ni ses méthodes d' Function, comme les indiens d'ECMAScript les fonctions et les objets faire de. C'est la raison pour apply et call ne sont pas définis sur ces méthodes. Dans IE 9, la plupart des objets DOM ont été améliorés pour hériter de la maternelle ECMAScript types. Comme les outils de développement sont considérés comme une extension pour IE (quoique, intégré dans l'extension), ils ne reçoivent pas les mêmes améliorations que le reste de la DOM.

Pour ce que ça vaut, vous pouvez toujours utiliser quelques - Function.prototype méthodes console méthodes avec un peu d' bind() magie:

var log = Function.prototype.bind.call(console.log, console);
log.apply(console, ["this", "is", "a", "test"]);
//-> "thisisatest"

165voto

Michael Erickson Points 1222

Une solution simple à ce problème de console.log est de définir ce qui suit au début de votre code JS :

Cela fonctionne pour moi dans tous les navigateurs. Cela crée une fonction factice pour console.log lorsque le débogueur n’est pas actif. Lorsque le débogueur est activé, la méthode console.log est définie et s’exécute normalement.

13voto

Steven Anderson Points 783

Je sais que c’est une question très ancienne mais j’estime que cela ajoute une alternative intéressante de la façon de traiter la question de la console. Placez le code suivant avant tout appel à console.* (donc votre tout premier script).

Référence :
URL : http://html5boilerplate.com/
Version : 4.3.0
Fichier : js/plugins.js

10voto

user2044223 Points 51

Console.log n’est définie que lorsque la console est ouverte. Si vous voulez vérifier pour elle dans votre code, assurez-vous que vous recherchez pour cela au sein de la propriété window

Cela lève une exception dans IE9 et ne fonctionnera pas correctement. Ne faites pas cela

6voto

Psyked Points 546

Après avoir lu l’article de commentaire de la Marc Cliament ci-dessus, j’ai maintenant changé ma fonction polyvalente multi-navigateurs console.log ressembler à ceci :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X