Selon ce post, il était dans la version bêta, mais ce n'est pas dans la version?
Réponses
Trop de publicités?console.log n'est disponible qu'après avoir ouvert les outils de développement (F12 pour l'ouvrir et la fermer). Ce qui est amusant, c'est qu'après l'avoir ouvert, vous pouvez le fermer, puis le publier via les appels console.log, et ceux-ci seront visibles lorsque vous le rouvrirez. Je pense que c'est un bug de toutes sortes, et peut être corrigé, mais nous verrons.
Je vais probablement utiliser quelque chose comme ça:
function trace(s) {
if ('console' in self && 'log' in console) console.log(s)
// the line below you might want to comment out, so it dies silent
// but nice for seeing when the console is available or not.
else alert(s)
}
et encore plus simple:
function trace(s) {
try { console.log(s) } catch (e) { alert(s) }
}
C'est mon point de vue sur les différentes réponses. Je voulais vraiment voir les messages consignés, même si je n'ai pas eu l'IE console ouverte quand ils ont été tirés, j'ai donc de les pousser dans une console.messages
tableau que j'ai créer. J'ai également ajouté une fonction d' console.dump()
pour faciliter la visualisation de l'ensemble du journal. console.clear()
de vider la file d'attente de messages.
Ces solutions aussi des "poignées" l'autre Console méthodes (qui, je crois, tous originaires de la Console de Firebug API)
Enfin, cette solution est dans la forme d'une IIFE, afin de ne pas polluer la portée globale. Le secours argument de fonction est définie dans le bas de la code.
Je viens de tomber de mon maître JS fichier qui est inclus sur chaque page, et l'oublier.
(function (fallback) {
fallback = fallback || function () { };
// function to trap most of the console functions from the FireBug Console API.
var trap = function () {
// create an Array from the arguments Object
var args = Array.prototype.slice.call(arguments);
// console.raw captures the raw args, without converting toString
console.raw.push(args);
var message = args.join(' ');
console.messages.push(message);
fallback(message);
};
// redefine console
if (typeof console === 'undefined') {
console = {
messages: [],
raw: [],
dump: function() { return console.messages.join('\n'); },
log: trap,
debug: trap,
info: trap,
warn: trap,
error: trap,
assert: trap,
clear: function() {
console.messages.length = 0;
console.raw.length = 0 ;
},
dir: trap,
dirxml: trap,
trace: trap,
group: trap,
groupCollapsed: trap,
groupEnd: trap,
time: trap,
timeEnd: trap,
timeStamp: trap,
profile: trap,
profileEnd: trap,
count: trap,
exception: trap,
table: trap
};
}
})(null); // to define a fallback function, replace null with the name of the function (ex: alert)
Quelques informations supplémentaires
La ligne var args = Array.prototype.slice.call(arguments);
crée un Tableau à partir de l' arguments
Objet. Cela est nécessaire parce que les arguments n'est pas vraiment un Tableau.
trap()
est un gestionnaire par défaut pour toutes les fonctions de l'API. Je passe les arguments d' message
de sorte que vous obtenez un journal des arguments qui ont été transmises à un appel d'API (pas seulement console.log
).
Modifier
J'ai ajouté un supplément de tableau console.raw
qui capture les arguments exactement comme passé de trap()
. J'ai réalisé qu' args.join(' ')
a été la conversion des objets à la chaîne de caractères "[object Object]"
qui peut parfois être indésirable. Grâce bfontaine pour la suggestion.