|
|
|
|
TUTORIEL CLIENTS WEB |
|
|
|
Les fonctions de l'extension Firefox GreaseMonkey |
Exploration du fonctionnement de l'extension autorisant, par des scripts, à modifier la page en cours de visite. Et tour d'horizon des différentes méthodes disponibles.
(12/12/2005) |
|
Après avoir présenté l'extension
Firefox GreaseMonkey
et ses possibilités (lire notre article
du 25/05/05), vient le moment d'aborder ses fonctions. Nous
avions déjà vu comment, en quelques lignes, retirer d'une
page un élément ayant un certain identifiant (dans notre exemple passé,
"pubflash"). GreaseMonkey permet d'aller beaucoup plus loin
: il autorise l'ajout de fonctionnalités, le correction de bugs
d'affichage ou encore la combinaison de données en provenance
de plusieurs sites.
Notez que la plupart des userscripts (scripts d'utilisateurs)
sont utilisables avec Opera, et qu'un port existe pour Internet Explorer.
Note de sécurité : si vous utilisez toujours
la version 0.3 de GreaseMonkey, soyez averti qu'elle contient
des failles de sécurité majeures. Nous vous recommandons
expressément de mettre à jour vers (au moins) la version 0.5,
qui a été entièrement réécrite pour sécuriser l'extension. La
dernière version actuelle est la v0.6.4, compatible avec Firefox
1.5.
Les scripts
GreaseMonkey sont exécutés au sein d'un environnement sécurisé
(de type "bac à sable", les scripts étant fortement surveillés),
mais cela ne leur empêche par de faire appel à quasiment toutes
les fonctionnalités habituellement accessibles aux JavaScript
classiques. Le DOM propose ainsi nombre de méthodes, propriétés
et gestionnaires d'évènements : innerHTML,
addEventListener, replaceChild,
nextSibling, parentNode...
Elles sont à découvrir dans la référence
DOM de Firefox.
Les scripts sont exécutés dès que le DOM est prêt à charger,
et avant même que l'évènement onLoad de JavaScript ne soit lancé.
Cela permet au script d'agir avant même que la page ne s'affiche.
Cette rapidité d'exécution combinée aux possibilités du DOM
autorisent les scripts à complètement revoir le fonctionnement
d'un site, de manière transparente pour l'utilisateur.
En outre, GreaseMonkey définit une API de fonctions spécifiquement
accessibles aux userscripts, et inutilisables par les JavaScript
normaux. Les fonctions de cette API offrent aux userscripts
un accès vers des propriétés ouvertes uniquement aux JavaScript
"privilégiés" (privileged) - les Javascript classiques
étant unprivileged...
Fonctions
de l'API interne GreaseMonkey
|
Fonctions
|
Utilité
|
GM_log()
|
Ecrit
un message dans la console JavaScript. Sert surtout
à déboguer un script.
|
GM_setValue()
|
Enregistre
une valeur (spécifique au script) dans les préférences
de Firefox.
|
GM_getValue()
|
Récupère
une valeur enregistrée avec GM_setValue.
|
GM_registerMenuCommand()
|
Ajoute
une ligne personnalisée au sous-menu User Scripts Command,
dans le menu Outils de Firefox.
|
GM_xmlhttpRequest()
|
Lance
une requête HTTP (en GET ou POST) vers n'importe quelle
URL.
|
GM_openInTab()
|
Ouvre
simplement l'URL spécifiée dans un nouvel onglet.
|
GM_addStyle()
|
Ajoute
une chaîne aux styles CSS du document en cours.
|
Source
: Benchmark Group, 2005
|
La plupart des fonctionnalités sont assez explicites.
Certaines méritent qu'on s'y attarde.
Par exemple, GM_setValue et
GM_getValue autorisent la création
de véritables configurations/préférences pour le script lui-même,
stockées au sein de Firefox et réutilisables à utilisation de
l'userscript - en quelque sorte, des cookies pour scripts, mais
liés au script, et non à un site.
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
GM_xmlhttpRequest est probablement
la fonctionnalité la plus puissante du lot. Là où l'objet XMLHttpRequest
original limite les requêtes GET
et POST au site en cours, GM_xmlhttpRequest
laisse le script récupérer des données en provenance de n'importe
quel site - et même plusieurs si besoin est. C'est grâce à cela
qu'un script comme BookBurro
existe : sur page de livre Amazon.com, il affiche les prix pour
le même livre chez d'autres revendeurs Internet...
Notez que toutes les versions de GreaseMonkey ne disposent pas
des mêmes fonctions de l'API. Il est alors de bon ton de tester
l'existence d'une fonction avant de l'utiliser. En cas d'absence,
il faudrait faire en sorte de fournir un fonctionnement alternatif...
ou avertir l'utilisateur :
if (!GM_xmlhttpRequest) {
alert('Ce script ne fonctionnera qu\'avec la dernière
version de GreaseMonkey !');
return;
} |
|
|
|
|
|
Quand achetez-vous le plus en ligne ? |
|
|
|
|
|
|
|
|