web-dev-qa-db-fra.com

Quels navigateurs supportent console.log ()?

Est-ce que tous les navigateurs supportent cela? Je voudrais générer une erreur en utilisant console.log() mais je me demandais si cela était supporté par tous les navigateurs?

console.log("Error etc");
28
KingKongFrog

Non, tous les navigateurs ne prennent pas en charge console.log car il ne fait pas partie de la norme et constitue une extension du DOM. Vous ne devez donc pas compter sur sa présence. Pour rendre votre code résistant, vous devez le supposer n'existe pas et coder en conséquence.

13
Aaron McIver

J'ai fait quelque chose comme ça dans le passé:

// Log to native console if possible, alert otherwise
window.console = typeof window.console === 'undefined'
    ? {log:function(/* polymorphic */){alert(arguments)}}
    : window.console;

Vous pouvez mettre cela en "haut" de votre JS et cela fonctionne plutôt bien lorsque vous êtes obligé de déboguer avec un navigateur qui ne supporte pas console, et ne nécessite pas que vous changiez votre autre source JS qui est déjà appeler console.log partout. Bien sûr, vous voudrez peut-être faire autre chose que alert pour préserver votre santé mentale ...

http://jsfiddle.net/4dty5/

12
Madbreaks

Il est maintenant août 2015 et je pense que la réponse actuelle à cette question est la suivante:

Tous les principaux navigateurs sur mobile et poste de travail supportent console.log. ( puis-je utiliser )

Cela ne fait partie d'aucune norme, mais c'est maintenant le résultat attendu d'un navigateur moderne complet.

Toutefois:

Si vous devez prendre en charge d'anciens navigateurs ( IE <10 ), plusieurs navigateurs mobiles ou des utilisateurs de navigateurs expérimentaux, il peut être judicieux d'utiliser un polyfill ( 1 , 2 , 3 , 4 ) pour s'assurer que window.console existe.

Il se peut que cela ne fonctionne pas dans WebWorkers sous tous les navigateurs. ( MDN )

Dans UC Browser et Opera Mini, les fonctions seront exécutées, mais vous ne verrez pas la sortie. ( puis-je utiliser )

Mais pour la grande majorité des utilisateurs Web, nous pouvons supposer que console.log fonctionnera comme prévu.

9
joeytwiddle

Faire une fonction wrapper:

function log(text) {
  if (window.console) {
     window.console.log(text);
  }
}
8
asgoth

Ce code vérifiera si la fonction existe et créera un mannequin dans le cas contraire. Crédit: StackOverflow

if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
7
ow3n

La plupart des navigateurs le font, cependant, Internet Explorer 9 pose des problèmes avec le lancement de javascript, à moins que la fenêtre de débogage ne soit ouverte. Cela nous a pris des heures pour trouver la solution à ce problème.

7
Menztrual

Voici une solution de contournement pour laquelle console.log() n'est pas disponible. Vous devez récupérer le console.logs vous-même.

  if (!window.console) window.console = {};
  if (!window.console.log) 
  {
    window.console.logs = [];
    window.console.log = function (string)
    {
      window.console.logs.Push(string);
    };
  }
1
Sprout Coder

Bien que tous les navigateurs ne le supportent pas, cela peut être accompli avec un petit morceau de code.

Dans son livre "Secrets of Javascript Ninja", John Resig (créateur de jQuery) a un code très simple qui gérera les console.log questions à travers le navigateur. Il explique qu'il aimerait avoir un message de journal qui fonctionne avec tous les navigateurs et voici comment il l'a codé:

 function log() {
  try {
     console.log.apply(console, arguments);
  } catch(e) {
  try {
     opera.postError.apply(opera, arguments);
  }
  catch(e) {
     alert(Array.prototype.join.call( arguments, " "));
  }
}
0
ambodi