Selon ce post, il était en version bêta, mais ce n'est pas dans la version?
javascript
logging
internet-explorer-8
console
leeand00
la source
la source
console.log
est là dans IE8, mais l'console
objet est pas créé jusqu'à ce que vous DevTools ouvert. Par conséquent, un appel àconsole.log
peut entraîner une erreur, par exemple s'il se produit au chargement de la page avant d'avoir la possibilité d'ouvrir les outils de développement. La réponse gagnante ici l' explique plus en détail.Réponses:
Encore mieux pour le repli est le suivant:
la source
console.log n'est disponible qu'après avoir ouvert les outils de développement (F12 pour l'activer et le fermer). Ce qui est drôle, c'est qu'après l'avoir ouvert, vous pouvez le fermer, puis le publier via des appels console.log, et ceux-ci seront visibles lorsque vous le rouvrirez. Je pense que c'est un bug en quelque sorte, et peut être corrigé, mais nous verrons.
Je vais probablement utiliser quelque chose comme ça:
et encore plus simple:
la source
alert
est mauvais. Certains codes se comportent différemment lorsque des alertes sont utilisées, car le document perd le focus, ce qui rend les bogues encore plus difficiles à diagnostiquer ou en crée des là où il n'y en avait pas auparavant. De plus, si vous laissez accidentellement unconsole.log
dans votre code de production, il est bénin (en supposant qu'il ne explose pas) - se connecte simplement en silence à la console. Si vous laissez accidentellement unalert
dans votre code de production, l'expérience utilisateur est ruinée.C'est mon point de vue sur les différentes réponses. Je voulais réellement voir les messages enregistrés, même si je n'avais pas la console IE ouverte lorsqu'ils ont été tirés, alors je les pousse dans un
console.messages
tableau que je crée. J'ai également ajouté une fonctionconsole.dump()
pour faciliter la visualisation de l'ensemble du journal.console.clear()
videra la file d'attente des messages.Cette solution "gère" également les autres méthodes de la console (qui, je crois, proviennent toutes de l' API Firebug Console )
Enfin, cette solution se présente sous la forme d'une IIFE , elle ne pollue donc pas le périmètre global. L'argument de la fonction de secours est défini au bas du code.
Je viens de le déposer dans mon fichier JS maître qui est inclus sur chaque page, et je l'oublie.
Quelques informations supplémentaires
La ligne
var args = Array.prototype.slice.call(arguments);
crée un tableau à partir de l'arguments
objet. Ceci est nécessaire car les arguments ne sont pas vraiment un tableau .trap()
est un gestionnaire par défaut pour l'une des fonctions de l'API. Je passe les arguments àmessage
afin que vous obteniez un journal des arguments qui ont été passés à tout appel API (pas seulementconsole.log
).Éditer
J'ai ajouté un tableau supplémentaire
console.raw
qui capture les arguments exactement tels qu'ils ont été transmistrap()
. J'ai réalisé que laargs.join(' ')
conversion d'objets en chaîne"[object Object]"
pouvait parfois être indésirable. Merci bfontaine pour la suggestion .la source
trap
fonctionvar args = Array.prototype.slice.call(arguments); var message = args.join(' ');
:? Pourquoi passez-vous les arguments à travers cela au message?Il convient de noter que
console.log
dans IE8 n'est pas une véritable fonction Javascript. Il ne prend pas en charge les méthodesapply
orcall
.la source
console.log=Function.prototype.bind.call(console.log,console);
pour contourner cela.bind
.En supposant que vous ne vous souciez pas d'un repli d'alerte, voici un moyen encore plus concis de contourner les lacunes d'Internet Explorer:
la source
J'aime vraiment l'approche affichée par "orange80". Il est élégant car vous pouvez le régler une fois et l'oublier.
Les autres approches exigent que vous fassiez quelque chose de différent (appelez quelque chose
console.log()
chaque fois), ce qui ne fait que demander des ennuis… Je sais que j'oublierais finalement.Je suis allé un peu plus loin, en enveloppant le code dans une fonction utilitaire que vous pouvez appeler une fois au début de votre javascript, n'importe où tant que c'est avant toute journalisation. (J'installe ceci dans le produit de routeur de données d'événement de mon entreprise. Cela aidera à simplifier la conception multi-navigateur de sa nouvelle interface d'administration.)
la source
/**/console.log("...");
il est donc facile de rechercher et de localiser le code temporaire.Si vous obtenez «indéfini» pour tous vos appels console.log, cela signifie probablement que vous avez toujours un ancien firebuglite chargé (firebug.js). Il remplacera toutes les fonctions valides du console.log d'IE8 même si elles existent. C'est ce qui m'est arrivé de toute façon.
Recherchez un autre code remplaçant l'objet console.
la source
La meilleure solution pour tout navigateur dépourvu de console est:
la source
Il y a tellement de réponses. Ma solution pour cela était:
En bref, si console.log n'existe pas (ou dans ce cas, n'est pas ouvert), stockez le journal dans un tableau d'espace de noms global. De cette façon, vous n'êtes pas harcelé par des millions d'alertes et vous pouvez toujours afficher vos journaux avec la console développeur ouverte ou fermée.
la source
la source
window.console.log()
pourrait être disponible dans IE8 même si ceconsole.log()
n'est pas le cas?typeof window.console.log === "object"
, pas"function"
Voici mon "IE s'il vous plaît ne plantage pas"
la source
J'ai trouvé ça sur github :
la source
J'utilise l'approche de Walter d'en haut (voir: https://stackoverflow.com/a/14246240/3076102 )
Je mélange une solution que j'ai trouvée ici https://stackoverflow.com/a/7967670 pour afficher correctement les objets.
Cela signifie que la fonction piège devient:
J'espère que ceci est utile:-)
la source
Cela fonctionne dans IE8. Ouvrez les outils de développement d'IE8 en appuyant sur F12.
la source
J'aime cette méthode (en utilisant la documentation de jquery prête) ... elle vous permet d'utiliser la console même dans ie ... le seul problème est que vous devez recharger la page si vous ouvrez les outils de développement de ie après le chargement de la page ...
cela pourrait être plus luisant en tenant compte de toutes les fonctions, mais je n'utilise que log donc c'est ce que je fais.
la source
Voici une version qui se connecte à la console lorsque les outils de développement sont ouverts et non lorsqu'ils sont fermés.
la source
apply
méthode.Créez votre propre console en html .... ;-) Cela peut être amélioré mais vous pouvez commencer par:
la source