Comment puis-je inclure un fichier javascript distant dans un script Greasemonkey?

J'essaie d'écrire un script Greasemonkey et j'aimerais utiliser la bibliothèque jQuery pour le faire, mais je ne sais pas très bien comment j'inclus jQuery d'une adresse Web pour se lancer.

Comment inclure jQuery (du serveur Web de Google) dans le script greasemonkey de sorte que je puisse simplement aller:

$(document).ready(function(){ // Greasemonkey stuff here }); 

Je préfère l'obtenir de cette source:

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script> 

Mise à jour: Merci pour l'aide, les réponses ont été très instructives. Cependant, j'ai utilisé mon GoogleFu un peu plus et j'ai rencontré cette solution : http://joanpiedra.com/jquery/greasemonkey/

Fonctionne comme un charme … il suffit de mettre à jour la source de la version hébergée de jQuery pour la remplir.

La manière recommandée dans les versions récentes de Greasemonkey est d'utiliser la balise de commentaire @require.

Par exemple

 // ==UserScript== // @name Hello jQuery // @namespace http://www.example.com/ // @description jQuery test script // @include * // @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js // ==/UserScript== 

Cependant … sachez que jQuery 1.4.1 et 1.4.2 sont incompatibles avec cette méthode

Merci Paul Tarjan, pour avoir souligné cela. Voir le fil du forum jQuery .

Soyez également conscient de ces sémantiques @require

Au moment où le script utilisateur est installé, Greasemonkey va télécharger et conserver une copie localement mise en cache du fichier distant qui peut être lu presque instantanément. La copie en cache est conservée dans le même dossier que votre script d'utilisateur installé. Le fichier distant n'est pas surveillé pour les modifications.

Veuillez noter qu'au moment de la rédaction de cette réponse, cette étiquette @require est seulement lue au moment de l'installation. Si vous éditez un script utilisateur existant pour ajouter cette balise, il sera ignoré. Vous devez désinstaller et réinstaller votre script utilisateur pour récupérer la modification.

De là :

 // ==UserScript== // @name jQueryTest // @namespace http://www.example.com/ // @include * // ==/UserScript== // Add jQuery 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); // Check if jQuery's loaded function GM_wait() { if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); } else { $ = unsafeWindow.jQuery; letsJQuery(); } } GM_wait(); // All your GM code must be inside this function function letsJQuery() { alert($); // check if the dollar (jquery) function works // the next call fails $("<div id='example' class='flora' title='This is my title'>I'm in a dialog!</div>").dialog({ buttons: { "Ok": function() { alert("Ok"); }, "Cancel": function() { $(this).dialog("close"); } } }); } 

Il fonctionne parfaitement, mais vous voudrez peut-être limiter les sites sur lesquels il fonctionne ou héberger le fichier jQuery js sur votre propre site afin de ne pas voler leur bande passante.

Vous pouvez essayer dynamiquement de créer un élément de script:

 var script = document.createElement("script"); script.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"; document.getElementsByTagName("head")[0].appendChild(script); 

Vous devrez peut-être retarder un peu pendant que le script est chargé (setTimeout?)