Faites profiter Greasemonkey de la puissance de jQuery

Greasemonkey and jQuery

Si vous lisez mon blog assez régulièrement, vous devez savoir ce que sont Greasemonkey et jQuery.

Si vous ne connaissez pas ces deux outils formidables, lisez d’abord ces deux articles :

* Greasemonkey…
* jQuery, une bibliothèque JavaScript simple et efficace

Je me suis posé la question récemment : Pourquoi ne pas faire profiter Greasemonkey de la puissance de jQuery et de ses selecteurs très intuitifs (CSS et XPath) ?

Apparement, je ne suis pas le seul à m’être posé cette question. On trouve un peu de littérature sur le Web à ce sujet. J’ai retenu deux solutions, avec leurs avantages et leurs inconvénients ?

La première consiste à ajouter l’appel à jQuery directement dans l’entête du document HTML :

var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);
/* votre script ici */

Je n’aime pas trop cette méthode car elle fait appel au script directement sur le site jquery.com. Par respect pour l’auteur (John Resig), il vaut mieux éviter de recourir à ce stratagème qui augmente considérablement (si beaucoup de gens l’utilisent) le trafic (et donc les coûts) sur le serveur sur lequel se trouve le site officiel de jQuery.

L’autre solution est d’inclure entièrement jQuery dans chacun de vos scripts Greasemonkey. Préférez bien entendu la version compressée qui ne fait que 19Ko, c’est pas bien méchant…

eval(function(p,a,c,k,e,d){e=function(c){return...
/* votre script ici */

Sources d’inspiration :

* How to play nicely with jQuery and Greasemonkey
* jQuery and GreaseMonkey

Maintenant, la meilleure solution d’après moi serait d’inclure jQuery directement dans l’extension Greasemonkey. Ca n’a pas encore l’air d’exister et je ne pense pas que ce soit super compliqué à faire. J’essaierai peut-être quand j’aurai le temps, c’est-à-dire pas tout de suite…

3 Comments

  1. Le Dévédec's avatar Le Dévédec says:

    Hello, j’ai trouvé une alternative apparemment plus intéressante que d’injecter à chaque fois le doc, c’est dans le même esprit du me dira, lien: http://daipratt.co.uk/notes-about-combining-jquery-and-greasemonkey/

    le code interessant:

    // ==UserScript==
    // @name Awesome Tool
    // @namespace http://daipratt.co.uk
    // @description Top Secret
    // @include http://daipratt.co.uk/*
    // @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js
    // ==/UserScript==

    Et par ce que je suis fainéant, tu aurais pas la doc français sous la mains pour coder soit-meme un module firefox? c’est du C?

    Like

  2. vinch's avatar Vinch says:

    Merci, c’est intéressant. A l’époque de le rédaction, Google n’hébergeait pas encore jQuery.

    Like

  3. Matt's avatar Matt says:

    Attention, si le site que tu modifies utilise une version différente de JQuery, c’est la version chargée par GreaseMonkey qui sera utilisée sur le site, d’où possibilité de plantage du site web original…

    Pour palier ce problème, dans ton script, créées quelque chose du genre :
    this.$ = this.jQuery = jQuery.noConflict(true);
    -> ta variable $ est localisée dans ta fonction et contient ta version de jQuery, alors que la variable globale window.$ contient la version jQuery du site original.

    Info trouvée ici :
    http://wiki.greasespot.net/@grant#Scope

    Like

Leave a reply to Le Dévédec Cancel reply