Dans quelles circonstances est window.console.log
défini dans Internet Explorer 9?
Même lorsqu'il window.console.log
est défini window.console.log.apply
et window.console.log.call
n'est pas défini. Pourquoi est-ce?
[Question connexe pour IE8: Qu'est-il arrivé à console.log dans IE8? .]
javascript
logging
internet-explorer-9
mloughran
la source
la source
Réponses:
Dans Internet Explorer 9 (et 8), l'
console
objet n'est exposé que lorsque les outils de développement sont ouverts pour un onglet particulier. Si vous masquez la fenêtre des outils de développement pour cet onglet, l'console
objet reste exposé pour chaque page vers laquelle vous naviguez. Si vous ouvrez un nouvel onglet, vous devez également ouvrir les outils de développement de cet onglet pour que l'console
objet soit exposé.L'
console
objet ne fait partie d'aucune norme et est une extension du modèle d'objet de document. Comme les autres objets DOM, il est considéré comme un objet hôte et n'est pas tenu d'hériterObject
ni de ses méthodesFunction
, comme le font les fonctions et les objets ECMAScript natifs. C'est la raisonapply
etcall
n'est pas définie sur ces méthodes. Dans IE 9, la plupart des objets DOM ont été améliorés pour hériter des types ECMAScript natifs. Comme les outils de développement sont considérés comme une extension d'IE (quoique, une extension intégrée), ils n'ont clairement pas reçu les mêmes améliorations que le reste du DOM.Pour ce que ça vaut, vous pouvez toujours utiliser certaines
Function.prototype
méthodes sur desconsole
méthodes avec un peu debind()
magie:la source
console
objet de Firebug .Une solution simple à ce problème console.log consiste à 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 actif, la méthode console.log est définie et s'exécute normalement.
la source
Je sais que c'est une très vieille question, mais je pense que cela ajoute une alternative valable sur la façon de traiter le problème de la console. Placez le code suivant avant tout appel à la console. * (Donc votre tout premier script).
Référence:
https://github.com/h5bp/html5-boilerplate/blob/v5.0.0/dist/js/plugins.js
la source
console.log n'est défini que lorsque la console est ouverte. Si vous voulez le vérifier dans votre code, assurez-vous de le vérifier dans la propriété window
cela lève une exception dans IE9 et ne fonctionnera pas correctement. Ne faites pas cela
la source
Après avoir lu l'article du commentaire de Marc Cliament ci-dessus, j'ai maintenant changé ma fonction console.log multi-navigateur multi-usage pour ressembler à ceci:
la source
Function.prototype.apply.call(console.log, console, arguments);
Je voudrais mentionner que IE9 ne soulève pas l'erreur si vous utilisez console.log avec des outils de développement fermés sur toutes les versions de Windows. Sous XP, c'est le cas, mais pas sous Windows 7. Donc, si vous avez abandonné la prise en charge de WinXP en général, vous pouvez utiliser directement console.log directement.
la source
Que diriez-vous...
la source