Cette extension qui fonctionne sur pas mal de navigateurs (je met IE dans le tas) permet d'ajouter des scripts Javascript sur tout les sites qu'on visite.
Une fois qu'on a installé et configuré un script, il s'exécute une fois que le DOM de la page est complétement chargé.
Pour la télécharger, c'est du coté du site officiel que ça se passe.
L'intérêt de cette extension est majeur quand on en a marre de voir des fonctionnalités inexistantes sur nos sites préférés.
L'ensemble des outils proposés par Greasemonkey ont été soigneusement implémentés pour permettent de développer facilement des scripts complets.
Basiquement, pour créer un script il faut lui donner un nom, une description, un espace de nom et les pages sur lesquels il s'exécutera.
De ces 4 informations, seule la description n'est pas essentielle. Le nom et aussi celui du fichier javascript généré sur la machine du client (vous). Si 2 scripts ont le même nom, alors le namespace (espace de nom) permettra de les différencier car plus tard, on verra que chaque script peut enregistrer des informations indépendamment. Les url à inclures sont évidement un point clé pour que les scripts soit exécutés.
Si je veux ajouter un script pour mon blog, je ferai :
Le caractère « * » indique "tous les caractères possibles". Ainsi, toutes les pages de mon blog seront cibles.
Le reste de la manoeuvre demande simplement de savoir écrire du javascript.
Le meilleur ami de l'Homme 2.0 est la console d'erreur. Vous pouvez interfacer Greasemonkey avec la console Firebug mais vous pouvez également loguer des données (le alert() du riche en gros ^^) :
Langage : javascript
GM_log("Ceci est un log =)");
console.log("Ceci est un message qui sera affiché dans la console de Firebug");
Par défaut, on ne peut pas interagir avec les scripts originaux des pages cibles, donc par défaut, si JQuery ou Mootools sont présents, vous ne pourrez par les utiliser. Forte heureusement, on peut palier au problème en utilisant une des fonctionnalité très intéressante de Greasemonkey : unsafeWindow.
Pour donner un exemple concret, en développant un script pour Facebook, j'ai eu besoin d'avoir accès à l'objet "window.presenceNotifications". Pour pouvoir l'utiliser, voila le code utilisé :
Langage : javascript
var w = unsafeWindow;
var foo = w.presenceNotifications;
En javascript, on utilise les cookie pour enregistrer des données (dans le cas où on n'a pas de langage type Php pour le faire à sa place).
Avec Greasemonkey, 4 fonctions nous sont accessibles :
Langage : javascript
GM_setValue('Nom', 'Valeur');
GM_getValue('Nom');
GM_deleteValue('Nom');
GM_listValues();
Bien sûr, entre 2 espaces de noms différents, impossible d'interagir avec les données.
Un tas d'autres fonctions sont présentes, en voici une liste :
- GM_addStyle() : ajoute du CSS à la page
- GM_xmlhttpRequest() : permet de faire des requêtes asynchrones
- GM_getResourceText() : permet de télécharger une ressource textuelle
- GM_getResourceURL() : télécharge une ressource (une image par exemple)
La documentation complète de Greasemonkey est disponible sur le wiki.
Pour donner des exemples, voila quelques-uns des scripts que j'ai développé :
Userscripts recense des milliers de scripts Greasemonkey pour une tripoté de sites web.
Si j'ai un conseil à donner avant d'écrire du code, c'est de savoir parcourir et modifier le DOM Html d'une page proprement, sans quoi vous allez avoir des problèmes.
A utiliser !