Lorsque j'ajoute le @grant pour GM_xmlhttpRequest, je reçois:
Erreur: Autorisation refusée d'accéder à la propriété 'call'
Dans le fichier jQuery.
Si je supprime la subvention, cela fonctionne bien.
// ==UserScript== // @name Dimi Test // @namespace Dimi // @include about:addons // @version 1 // @grant GM_xmlhttpRequest // @include http://*.myDomain.*/* // ==/UserScript== var $J = unsafeWindow.jQuery; $J(unsafeWindow.document).ready(function(){ alert('Hello'); });
Voir "Erreur: Autorisation refusée d'accéder au gestionnaire de propriétés" .
Vous ne pouvez plus invoquer le jQuery de la page cible comme ça.
(Notez que dans @grant none
mode (le défaut de GM 2), unsafeWindow
est identique à la window
… Mais, alors vous ne pouvez pas utiliser les fonctions GM_
).
@require
votre propre copie de jQuery; Il ne sera pas en conflit avec la page et sera chargé plus rapidement, pour démarrer.
N'utilisez pas de unsafeWindow
pour des choses comme celles-ci (ou du tout, si vous pouvez l'aider), et $(document).ready()
n'est pas nécessairement nécessaire pour les scripts Greasemonkey.
Votre (nouveau) exemple de script serait simplement:
// ==UserScript== // @name Dimi Test // @namespace Dimi // @version 1 // @grant GM_xmlhttpRequest // @include about:addons // @include http://*.myDomain.*/* // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js // ==/UserScript== $("body").prepend ('<h1>Hello World!</h1>');
Et vous pouvez ensuite mélanger les fonctions GM_
et votre instance de jQuery sans problème.
Remarque: Le script de question a // @include about:addons
.
Les scripts Greasemonkey ne fonctionneront pas sur la page about:addons
, par conception.