console.journal.appliquez pas de travail dans IE9
Ressemble, j'ai ré-inventé la roue, mais de toute façon cela ne fonctionne pas dans Internet Explorer 9, mais le fait dans IE6.
function debug()
if(!window.console) {
window.console = { log: function() { /* do something */ } };
}
console.log.apply(console, arguments);
}
Liées:
Appliquer() question pour javascript
F12 Debugger me dit que cet "objet" (de la console.log) ne prend pas en charge la méthode 'appliquer'.
Il n'est pas encore reconnue comme une fonction?
Toute autre pointeurs ou des idées?
Vous devez vous connecter pour publier un commentaire.
La deuxième partie de la réponse J'ai fait récemment réponses à cette question. Je ne considère pas cela un duplicata de celui-là, donc, pour des raisons de commodité, je vais la coller ici:
De sorte que vous pouvez réparer tous les
console
méthodes pour IE 9 de la même manière:Cela remplace le "host" fonctions avec les fonctions natives qui appellent le "host" des fonctions. Vous pouvez le faire fonctionner dans Internet Explorer 8, y compris la compatibilité des implémentations pour
Function.le prototype.bind
etArray.le prototype.forEach
dans votre code, ou la réécriture de l'extrait ci-dessus afin d'incorporer les techniques utilisées par ces méthodes.Voir aussi
de la console.log
typeof est "objet" au lieu de "fonction" - Microsoft Connect (Live compte requis)Function#bind
, que l'on aurait à fournir sur les implémentations qui ne sont pas tout à fait à ECMAScript5 spec encore...function debug() { Function.prototype.apply.call(console.log, console, arguments); }
qui est essentiellement ce que celabind
-ing code ne.bind()
un peu plus courte queapply()
🙂 Cependant, la principale différence est que votre méthode est nativement compatible avec IE 8, alors que la compatibilité de la mise en œuvre debind()
serait nécessaire pour que la méthode décrite dans ma réponse.bind
, il n'était pas aussi clair pour moi ce qu'il fait et comment il était d'éviterconsole.log.apply
; je voulais juste poster un commentaire dans le cas où quelqu'un d'autre était dans la confusion de la même façon dans l'avenir.bind
etcall
inversé par rapport à votre blog. Icall
plutôt que d'appelerbind
, c'est à dire, le blog est inversé. Malheureusement, je n'ai pas IE9 ici pour tester. 🙁bind()
🙂 Voir la mise à jour dans le fond de mon blog.console.log == "object"
retourne toujoursfalse
, je suis tout à fait vous vous demandez si c'est correct?Il y a aussi Paul Irlandais du moyen de le faire. Il est plus simple que certaines des réponses ci-dessus, mais rend le journal toujours la sortie d'un tableau (même si un seul argument a été adoptée en):
Plusieurs de IE hôte fonctions de l'objet ne sont pas vraiment des fonctions JavaScript et donc ne pas avoir
apply
oucall
. (alert
, par exemple.)De sorte que vous aurez à faire à la dure:
Function
objet.window.console
dans certains endroits, etconsole
dans d'autres. Maintenant, toutes choses étant égales par ailleurs, ceux d'en venir à la même chose, mais c'est-à-dire nous sommes en train de parler et je ne serais pas tout surpris si il joue de la magie des jeux avecconsole.log
.console
objet n'existe pas jusqu'à ce que la première fois que vous lancez les outils de développement pour un onglet particulier.Je suis tombé sur le même IE mal et fait une routine pour elle.
Il n'est pas aussi chic que toutes les implémentations, mais il fonctionne dans TOUS les navigateurs modernes.
Je l'ai testé avec Firefox (Firebug), c'est à dire 7,8,9 Chrome et Opera.
Il fait usage de la mal EVAL, mais vous ne voulez déboguer dans le développement.
Ensuite, vous remplacez le code par
debug = function () {};
Si elle est ici.
Ce Qui Concerne, Hans
Oups j'ai oublié mon toType de la fonction, c'est ici.
Ok, il fonctionne lorsque vous l'écrire de cette façon:
Comportement étrange... mais si vous l'écrire de cette façon 'de la console.le journal est reconnu comme une fonction.
La raison pour laquelle je suis à cette question est que je tente "épicé" de la console.la fonction log pour un module spécifique, donc, je n'aurais plus localisée et perspicace les informations de débogage en jouant un peu avec les arguments, c'est à dire 9 le rompit.
@Andy E réponse est excellente et m'a aidé avec beaucoup de perspicacité sur appliquer. Je n'ai juste pas la même démarche de soutien IE9, donc ma solution est en cours d'exécution de la console uniquement sur les "navigateurs modernes" (le fait d'être moderne signifie que quels que soient les navigateurs qui se comportent de la façon dont j'attends =)
Essayer:
Fonctionne pour
log
,debug
,info
,warn
,error
,group
ougroupEnd
.