L'accès aux Variables de Greasemonkey pour la Page & vice versa
J'ai le code suivant dans test.js qui est exécuté juste avant </body>:
alert('stovetop');
alert(greasy);
J'ai le code suivant dans test.user.js:
(function () {
'use strict';
var greasy = 'greasy variable';
document.title = 'greasy title';
}());
'cuisinière est alerté donc je sais que la page javascript fonctionne, et document.title
obtient changements donc je sais que le script javascript fonctionne. Toutefois, sur la page web, j'obtiens l'erreur:
Erreur: ReferenceError: grasse n'est pas défini Fichier Source: /test.js
Comment à partir de la page web puis-je accéder à la variable définie par Greasemonkey et vice-versa?
- Si vous allez de cette façon, ça ne marchera que dans firefox que Chrome sandbox userscripts.
Vous devez vous connecter pour publier un commentaire.
Scripts Greasemonkey pour fonctionner dans un autre champ d'application et peut également fonctionner dans un bac à sable, en fonction de la
@grant
paramètres.En outre, la question de code isolats
greasy
en fonction de la portée (comme gladoscc dit).Enfin, par défaut, test.js le feu avant que le script Greasemonkey ne, il ne verra pas de définir des variables, de toute façon. Utilisation
@-à-document start
à l'adresse que.Donc, compte tenu de cette test.js, courir à droite avant de
</body>
:Alors la suivante fonctionne:
Pas de sandbox:
Avec bac à sable, pas de la portée de la fonction,
unsafeWindow
:==> mise à jour Importante: Greasemonkey changé unsafeWindow manipulation avec la version 2.0, l'exemple de script ne fonctionnera pas avec le GM 2.0 ou version ultérieure. Les deux autres solutions encore du travail.
Avec bac à sable, pas de la portée de la fonction, Injection de Script:
Notes:
unsafeWindow
etwindow
sont les mêmes.Tous ces scripts produire le même résultat sur la console:
La Injection de Script code fonctionne dans une variété de navigateurs en plus de Firefox.
unsafeWindow
fonctionne actuellement uniquement dans Firefox+Greasemonkey(ou Scriptish) ou Chrome+Tampermonkey.@grant none
méthode, mais remplacerunsafeWindow
avecwindow
(bien qu'ils soient identiques@grant none
est en vigueur), ou pour utiliser le Injection de Script de la méthode. ... Cependant, le risque de l'utilisation deunsafeWindow
est grandement exagérée, sans réel exploits signalés. Tant que vous n'êtes pas sur un site qui cible de manière proactive GM scripts, il devrait y avoir aucun risque.Votre variable
greasy
est défini dans le cadre de la fonction anonyme. Vous ne pouvez pas accédergreasy
même dans votre script, sauf si c'est une partie de votre fonction. Exemple:Faire de cette façon:
Aussi, pourquoi êtes-vous mettre votre code dans une fonction anonyme et puis l'exécuter?
Vous pouvez également utiliser localStorage: