Détectez la présence de Firebug chez vos visiteurs
Posé ici le mardi 09 juin 2009 à 12:16 par
Non, je ne suis pas mort. Juste un emploi du temps de fou qui m'empêche d'alimenter ce pauvre blog. Je passe "5 minutes" poster cette petite astuce qui pourra servir à certains.
Firebug est un excellent outil de debug Javascript / Css de plus en plus installé sur le Firefox des développeurs. Seulement Firebug lorsqu'il est activé peut grandement ralentir l'exécution d'une page, surtout si elle est bourrée de scripts comme le sont très régulièrement nos jolies applis Web2.x.
Gmail et ExtJs, entre autres, l'ont compris et préviennent leurs visiteurs du possible ralentissement engendré par l'activation du plug-in.
Mieux, Gmail propose un lien pour corriger ces ralentissements par une meilleure configuration.
Le Defensive Design * étant mon sujet du moment, je me suis penché sur ce modèle d'alerte et partage ici comme en réaliser simplement une.
* Je recommande vivement aux anglophones la lecture de Defensive Design for the Web: How to Improve Error Messages, Help, Forms, and Other Crisis Points. L'art de guider le visiteur sur les erreurs et confusions que l'on sait inévitables.
Allons-y !
Le résultat final sera cette alerte, affichée qu'aux utilisateurs de Firebug. J'ai volontairement évité ici d'utiliser jQuery pour rendre la fonction universelle. Elle est simplissime est peut être rapidement adaptée à n'importe quelle librairie. Ce qui compte c'est la détection du plug-in. Le reste c'est affaire de goût et de besoin.
Comment détecter la présence de Firebug ? Tout simplement par l'existence des fonctions ajoutées par celui-ci.
if (window.console && window.console.firebug) {
// ...
}
A partir de là, il suffit de créer une petite alerte. Ne pas oublier de laisser une porte de sortir au visiteur pour ne pas l'importuner avec un message qu'il a déjà lu : ici un lien [ masquer ] qui passera le tout en display:none.
Javascript
<script type="text/javascript">
function detectFirebug() {
if (window.console && window.console.firebug) {
var html = '';
html += '<div id="firebug-alert">';
html += '<b>Firebug peut ralentir l\'execution de cette page</b>, ¬
… il est recommander de le désactiver. ';
html += '<a href="#" onclick="javascript:document.getElementById(\'firebug-alert\') ¬
… .style.display=\'none\'">[ masquer ]</a>';
html += '</div>';
document.write(html);
}
}
</script>
Vient la feuille de style pour mettre un peu de couleur là dessus. Voici la mienne.
Feuille de style
<style type="text/css">
#firebug-alert {
background:#FFFFCC;
border:1px solid #666666;
color:#666666;
font:12px "Trebuchet MS", Tahoma, sans-serif;
padding:5px;
}
#firebug-alert a {
color:#FF6600;
text-decoration:none;
}
</style>
Usage
Une fois la fonction detectFirebug() ajoutée ou inclue dans la page, placez les lignes ci-dessous à l'endroit ou vous souhaitez voir apparaitre l'éventuelle alerte.
<script type="text/javascript">
detectFirebug();
</script>
Ce contenu est mis à disposition selon les termes de la licence Creative Commons 2.0 France : Paternité, Pas d'Utilisation Commerciale, Partage des Conditions Initiales à l'Identique.
Context
Thématiques :
Trackbacks
0 trackback



Commentaires
3 commentaires
Sympatoche ton petit bout de script mais il ne fonctionne pas ou je suis trop noob pour le faire fonctionner lol, je pense qu'il y a une erreur dans la concaténation de la var html.
Pour info j'ai tester sous firefox 3.5
1. Par The_Death_Raw le mardi 06 octobre 2009 à 12:50
Bonsoir,
Il marche très bien.
Les signes ¬ et … sont à enlever. Ils indiquent juste que la ligne continue plus bas.
2. Par Jay Salvat le mardi 06 octobre 2009 à 19:42
Ha ok mais ça ne marche toujours pas malgré tout!
Il faut que je dise aussi que j'ai tester en local donc je pense que le script doit marcher une fois héberger :)
3. Par The_Death_Raw le mardi 06 octobre 2009 à 20:39