J'ai essayé de mettre cette ligne mais cela ne fonctionne 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 fonctionnerait pas!
jquery
greasemonkey
Keira Nighly
la source
la source
$(document).ready(function() {...});
dans votre code@requires
est d'ajouter un hachage ou une chaîne de requête à la fin de l'@require
instruction et de la modifier chaque fois qu'elle a besoin d'être mise à jour. Similaire à la façon dont vous «cachez» un favicon.// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js?v=changeme
Réponses:
Peut-être n'avez-vous pas une version assez récente de Greasemonkey. C'est la version 0.8 qui a été ajoutée
@require
.Si vous n'avez pas 0.8, utilisez la technique décrite par Joan Piedra pour ajouter manuellement un
script
élément à la page .Entre la version 0.8 et 0.9,
@require
n'est traité que lors de la première installation du script. 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.Depuis la version 0.9, le comportement de Greasemonkey a changé (pour résoudre un problème lié de manière tangentielle ) de sorte qu'il charge désormais les scripts requis après chaque modification; la réinstallation du script n'est plus nécessaire.
la source
@require
directives, vous devrez désinstaller et réinstaller le script pour qu'il prenne effet.Si vous souhaitez utiliser jQuery sur un site où il est déjà inclus, voici le chemin à parcourir (inspiré par BrunoLM):
Je sais que ce n'était pas l'intention initiale de la question, mais cela devient de plus en plus un cas commun et vous n'avez pas explicitement exclu ce cas. ;)
la source
if(typeof $ == 'undefined'){ var $ = unsafeWindow.jQuery; }
Dans Chrome, un site Jquery sera déjà disponible.alert($('.submit_entry').length);
fois une erreur et l'envoi de l'alerte appropriée en même temps.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 utilisateur. Pas besoin de faire une balise de script, puisque vous exécutez déjà JavaScript!
L'utilisateur ne télécharge le script qu'une seule fois de toute façon, donc la taille du script n'est pas un gros problème. En outre, si vous souhaitez que votre script Greasemonkey fonctionne dans des environnements non GM (tels que les scripts utilisateur GM-esque d'Opera ou Greasekit sur Safari), cela vous aidera à ne pas utiliser des constructions uniques GM telles que @require.
la source
La solution de Rob est la bonne - utilisez-la
@require
avec la bibliothèque jQuery et assurez-vous de réinstaller votre script pour que la directive soit traitée.Je pense qu'une chose mérite d'être ajoutée, c'est que vous pouvez utiliser jQuery normalement une fois que vous l'avez inclus dans votre script, à l' exception des 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 dans laquelle vous créez un wrapper pour GM_xmlhttpRequest (la version Greasemonkey de XHR) et utilisez jQuery
ajaxSetup()
pour spécifier votre version encapsulée par défaut. Une fois que vous faites cela, vous pouvez utiliser$.get
et$.post
comme d'habitude.Vous pouvez également rencontrer des problèmes avec jQuery
$.getJSON
car il charge JSONP à l'aide de<script>
balises. Cela conduit à 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. Votre meilleur pari est d'utiliser à la$.get
place et d'analyser le résultat avecJSON.parse()
.la source
Vous pouvez créer un nouveau script à l'aide du nouveau script utilisateur dans Greasemonkey mais vous devez modifier le fichier config.xml dans le dossier gm_scripts.
Votre fichier config.xml doit avoir une syntaxe similaire à celle-ci:
Remarquez la
<Require>
balise.Dans votre script, vous pouvez utiliser la syntaxe jQuery directe. Assurez-vous d'avoir la balise require dans l'en-tête Greasemonkey. Voici un exemple de Hello World:
N'oubliez pas qu'après avoir modifié fichier config.xml, vous devez redémarrer votre navigateur pour que Greasemonkey recharge à nouveau les paramètres.
Notez également que vous devez copier le fichier jquery.js dans votre dossier de répertoire de script pour que cela fonctionne. J'ai testé cela, et cela ne fonctionne que si vous copiez le fichier manuellement là-bas.
Joyeux jQuerying!
la source
Mettre à jour : comme le dit le commentaire ci-dessous, cette réponse est obsolète.
Comme tout le monde l'a dit, @require n'est exécuté que lorsque le script est installé. Cependant, vous devez également noter qu'actuellement jQuery 1.4. * Ne fonctionne pas avec greasemonkey. Vous pouvez voir ici pour plus de détails: http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error
Vous devrez utiliser jQuery 1.3.2 jusqu'à ce que les choses changent.
la source
Si vous utilisez le chrome, vous devez opter pour une alternative car Chromium ne le prend pas en charge
@require
.Source: The Chromium Project - Scripts utilisateur
Plus de détails et d'alternatives sur Comment utiliser jQuery dans les scripts Greasemonkey dans Google Chrome?
la source
la méta @require ne fonctionne pas lorsque vous souhaitez dissocier des événements sur une page Web à l'aide de jQuery, vous devez utiliser une bibliothèque jQuery incluse dans la page Web, puis l'obtenir dans Greasemonkey avec
var $ = unsafeWindow.jQuery;
Comment puis-je dissocier les gestionnaires d'événements jquery dans greasemonkey?la source
Vous pourriez obtenir
Component unavailable
si vous importez directement le script jQuery.C'est peut-être de cela que parlait @Conley ...
Vous pouvez utiliser
qui est une version modifiée pour fonctionner sur Greasemonkey, puis obtenir l'objet jQuery
la source
@require
n'est PAS traité uniquement lors de la première installation du script! D'après mes observations, il est traité lors de la première exécution! Vous pouvez donc installer un script via la commande de Greasemonkey pour créer un tout nouveau script. La seule chose à laquelle vous devez faire attention est qu'il n'y a pas de rechargement de page déclenché, avant d'ajouter la@require
partie. (et enregistrez le nouveau script ...)la source