249 votes

Comment puis-je utiliser jQuery dans Greasemonkey ?

J'ai essayé de mettre cette ligne mais ça ne marche pas :

// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js

jQuery ne fonctionne pas du tout dans Greasemonkey. Existe-t-il un autre moyen d'utiliser jQuery dans Greasemonkey ?

--

Pour toutes les personnes qui ont le même problème, vous devez télécharger le fichier sur greasespot puis l'installer à partir de là.

L'option Créer un nouveau script ne fonctionne pas !

0 votes

@Rob et qui cela va-t-il fonctionner ? Comment installer un script qui ne va jamais dans userscripts.org ?

14 votes

@Jorge, vous ne savez pas que ce site Web ne contient absolument aucune magie ? Vous pouvez naviguer vers n'importe quel fichier portant l'extension .user.js, et Greasemonkey vous demandera si vous voulez l'installer. Cela inclut les fichiers sur votre ordinateur local. L'installation de tout script est aussi simple que de le faire glisser sur votre navigateur.

5 votes

Il semble qu'il fonctionne bien maintenant, même en modifiant le fichier après l'installation.

209voto

Rob Kennedy Points 107381

Peut-être n'avez-vous pas une version assez récente de Greasemonkey. C'est la version 0.8 qui a ajouté @require .

// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js 

Si vous ne disposez pas de 0.8, utilisez la technique décrite par Joan Piedra pour ajouter manuellement un script à la page .

Entre la version 0.8 et 0.9, @require est traité uniquement lorsque le script est installé pour la première fois. Si vous modifiez la liste des scripts requis, vous devez désinstaller votre script et le réinstaller ; Greasemonkey télécharge le script requis une fois lors de l'installation et utilise une copie en cache par la suite.

À partir de la version 0.9, le comportement de Greasemonkey a été modifié (pour répondre à la question suivante une question indirectement liée ) de sorte qu'il charge désormais les scripts requis après chaque édition ; la réinstallation du script n'est plus nécessaire.

0 votes

Rob, Alors, que dois-je faire ? Je crée mes scripts d'utilisateur en utilisant le lien Nouvel utilisateur script. J'ai ajouté l'@require et cela n'a pas fonctionné. Alors comment puis-je le faire fonctionner ? S'il vous plaît, expliquez-moi que je veux que la méthode @require fonctionne car elle est beaucoup plus élégante que la méthode de l'élément script.

1 votes

Ok, j'ai réussi à le faire fonctionner. Merci ! !! J'ai téléchargé le script dans Greasespot et l'ai installé à partir de là.

2 votes

J'imagine que lorsque vous créez un nouveau script à partir de Greasemonkey, le script est installé immédiatement. Ce script est le fichier vide par défaut, ce qui signifie que vous avez manqué votre chance d'exiger des scripts externes.

89voto

hheimbuerger Points 3156

Si vous voulez utiliser jQuery sur un site où il est déjà inclus, c'est la solution (inspirée par BrunoLM) :

var $ = unsafeWindow.jQuery;

Je sais que ce n'était pas l'intention initiale de la question, mais cela devient de plus en plus un cas courant et vous n'avez pas explicitement exclu ce cas ;)

4 votes

Non supporté dans Chrome apparemment - chromium.org/developers/design-documents/user-scripts

0 votes

Fonctionne dans Scriptish de Firefox !

2 votes

Vous voudrez vérifier que vous ne l'avez pas déjà comme ça : if(typeof $ == 'undefined'){ var $ = unsafeWindow.jQuery; } Dans Chrome, un site Jquery sera déjà disponible.

21voto

Daniel Lew Points 39063

Il n'y a absolument rien de mal à inclure l'intégralité de jQuery dans votre script Greasemonkey. Prenez simplement la source, et placez-la en haut de votre script d'utilisateur. Pas besoin de faire une balise script, puisque vous exécutez déjà le JavaScript !

L'utilisateur ne télécharge le script qu'une fois de toute façon, donc la taille du script n'est pas une grande préoccupation. En outre, si vous voulez un jour que votre script Greasemonkey fonctionne dans des environnements non GM (tels que les scripts utilisateur GM-esque d'Opera, ou Greasekit sur Safari), il sera utile de ne pas utiliser les constructions GM-uniques telles que @require.

7voto

Ryan Points 840

La solution de Rob est la bonne utiliser @require avec la bibliothèque jQuery et veillez à réinstaller votre script pour que la directive soit traitée.

Une chose qui mérite d'être ajoutée est que vous pouvez utiliser jQuery normalement une fois que vous l'avez inclus dans votre script, sauf pour les méthodes AJAX . Par défaut, jQuery recherche XMLHttpRequest, qui n'existe pas dans le contexte Greasemonkey. J'ai écrit sur une solution de contournement où l'on crée un wrapper pour GM_xmlhttpRequest (la version Greasemonkey de XHR) et où l'on utilise la fonction jQuery ajaxSetup() pour spécifier votre version enveloppée comme étant la version par défaut. Une fois que vous avez fait cela, vous pouvez utiliser $.get et $.post comme d'habitude.

Vous pouvez également rencontrer des problèmes avec l'outil jQuery $.getJSON car il charge JSONP en utilisant <script> tags. Cela entraîne des erreurs car jQuery définit la fonction de rappel dans la portée de la fenêtre Greasemonkey, et les scripts chargés recherchent le rappel dans la portée de la fenêtre principale. Le mieux est d'utiliser $.get à la place et analyser le résultat avec JSON.parse() .

4voto

Auspex Points 21

Vous pouvez créer un nouveau script en utilisant le Nouvel utilisateur script dans Greasemonkey mais vous devez éditer le fichier config.xml à l'intérieur du dossier gm_scripts.

Votre config.xml devrait avoir une syntaxe similaire à celle-ci :

<Script filename="jquery_test.user.js" name="jQuery Test" namespace="http://www.example.com/jQueryPlay/" description="Just a test" enabled="true" basedir="jquery_test">
        <Include>http://*</Include>
        <Require filename="jquery.js"/>
</Script>

Remarquez le <Require> étiquette.

Dans votre script, vous pouvez utiliser la syntaxe directe de jQuery. Assurez-vous d'avoir la balise require dans l'en-tête Greasemonkey. Voici un exemple de Hello World :

// ==UserScript==
// @name           Test jQuery
// @namespace      http://www.example.com/jQueryPlay/
// @description    Just a test
// @include        http://*
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
// ==/UserScript==

$(document).ready(function() {  
        alert("Hello world!");
});

Rappelez-vous qu'après avoir modifié le config.xml vous devez redémarrer votre navigateur pour que Greasemonkey recharge les paramètres à nouveau.

Notez également que vous devez copier le fichier jquery.js dans votre répertoire script pour que cela fonctionne. J'ai testé cela, et cela ne fonctionne que si vous copiez effectivement le fichier manuellement à cet endroit.

Bon jQuery !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X