Javascript qui détecte Firebug?

Quelle est la manière sûre de détecter si un utilisateur a un Firebug activé?

  • Comment bloquer les outils de développement (comme Firebug) dans une page?
  • Console Firebug: ne pas afficher console.log
  • Comment éditer JavaScript dans Firebug?
  • Comment puis-je modifier javascript dans mon navigateur car je peux utiliser Firebug pour éditer CSS / HTML?
  • Javascript: permet à l'utilisateur de sélectionner un élément HTML comme Firebug?
  • Comment puis-je utiliser la connexion à la console dans Internet Explorer?
  • La construction du module a échoué: TypeError: Impossible de lire la propriété 'newLine' de undefined
  • Javascript: suppression d'un auditeur anonyme d'événements
  • Pourquoi ne puis-je utiliser une fonction Javascript avant sa définition dans un bloc try?
  • Le sélecteur d'identification jQuery fonctionne uniquement pour le premier élément
  • Onbeforeprint () et onafterprint () équivalent pour les navigateurs non IE
  • Jquery ne sera pas chargé car il ne peut être trouvé
  • 7 Solutions collect form web for “Javascript qui détecte Firebug?”

    Réponse originale:

    Vérifiez l'objet de console (créé uniquement avec Firebug), comme tel:

     if (window.console && window.console.firebug) { //Firebug is enabled } 

    Mise à jour (janvier 2012):

    Les développeurs Firebug ont décidé de supprimer window.console.firebug . Vous pouvez toujours détecter la présence de Firebug par typage de canard comme

     if (window.console && (window.console.firebug || window.console.exception)) { //Firebug is enabled } 

    Ou diverses autres approches comme

     if (document.getUserData('firebug-Token')) ... if (console.log.toString().indexOf('apply') != -1) ... if (typeof console.assert(1) == 'string') ... 

    Mais en général, il ne devrait pas être nécessaire de le faire réellement.

    Si firebug est activé, window.console ne sera pas défini. Console.firebug renverra le numéro de version.

    À partir de Firebug version 1.9.0, console.firebug n'est plus défini en raison de problèmes de confidentialité; Voir les notes de version , le rapport de bogue . Cela brise les méthodes mentionnées ci-dessus. En effet, cela modifie la réponse à la question d'Allan à "il n'y a aucun moyen"; S'il existe une autre façon, il est considéré comme un bug.

    La solution est plutôt de vérifier la disponibilité de console.log ou quoi que ce soit que vous souhaitez utiliser ou remplacer.

    Voici une suggestion pour remplacer le type de code que David Brockman présente ci-dessus, mais qui ne supprime pas les fonctions existantes.

     (function () { var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd']; if (window.console) { for (var i = 0; i < names.length; i++) { if (!window.console[names[i]]) { window.console[names[i]] = function() {}; } } } else { window.console = {}; for (var i = 0; i < names.length; i++) { window.console[names[i]] = function() {}; } } })(); 

    Il se peut qu'il soit impossible de détecter.

    Firebug a plusieurs onglets, qui peuvent être désactivés séparément, et ne sont désormais pas activés par défaut.

    Le GMail tel qu'il est ne peut que dire si oui ou non j'ai l'onglet "console" activé. Probing plus loin que cela nécessiterait probablement un contournement de sécurité, et vous ne voulez pas y aller.

    Vous pouvez utiliser quelque chose comme ceci pour empêcher les appels Firebug dans votre code de provoquer des erreurs s'il n'est pas installé.

     if (!window.console || !console.firebug) { (function (m, i) { window.console = {}; while (i--) { window.console[m[i]] = function () {}; } })('log debug info warn error assert dir dirxml trace group groupEnd time timeEnd profile profileEnd count'.split(' '), 16); } 

    Gardez à l'esprit dans Chrome window.console renvoie également true ou [ Object console] .

    De plus, je vérifierais si Firebug est installé avec

    if (window.console.firebug !== undefined) // firebug is installed

    Voici ce que je trouve dans Safari et Chrome, aucun firebug n'est installé.

     if (window.console.firebug) // true if (window.console.firebug == null) // true if (window.console.firebug === null) // false 

    Les is-True and Is-Not Operators font évidemment le type de coercition, ce qui devrait être évité en JavaScript.

    Actuellement, window.console.firebug a été supprimé par la dernière version de Firebug. Parce que firebug est un débogueur JavaScript basé sur l'extension, qui a défini une nouvelle fonction ou objet dans window.console. Donc, la plupart du temps, vous ne pouvez utiliser ces nouvelles fonctions définies que pour détecter l'état de fonctionnement de Firebug.

    tel que

     if(console.assert(1) === '_firebugIgnore') alert("firebug is running!"); if((console.log+'''').indexOf('return Function.apply.call(x.log, x, arguments);') !== -1) alert("firebug is running!"); 

    Vous pouvez tester cette approche dans chaque firebug.

    Meilleurs vœux!

    JavaScript rend le site Web intelligent, beauté et facile à utiliser.