Il y a quelques questions à ce sujet, mais la «solution» générale d'utilisation de unsafeWindow
ne fonctionne pas pour moi. J'essaie d'utiliser le Stack Exchange Javascript SDK.Impossible d'utiliser la bibliothèque requise lorsqu'une valeur @grant est définie
Cela fonctionne:
// ==UserScript==
// @name testing
// @include http://stackoverflow.com/*
// @require https://api.stackexchange.com/js/2.0/all.js
// @version 1
// @grant none
// ==/UserScript==
console.log(SE);
SE.init({
clientId: 1234,
key: 'my key',
channelUrl: location.protocol + '//stackoverflow.com/blank',
complete: function (d) {
console.log(d);
console.log('SE init');
}
});
Cela ne veut pas:
// ==UserScript==
// @name testing
// @include http://stackoverflow.com/*
// @require https://api.stackexchange.com/js/2.0/all.js
// @version 1
// @grant GM_setValue
// ==/UserScript==
console.log(SE);
SE.init({
clientId: 1234,
key: 'my key',
channelUrl: location.protocol + '//stackoverflow.com/blank',
complete: function (d) {
console.log(d);
console.log('SE init');
}
});
Cependant, les deux versions du journal Object { authenticate: n(), init: r() }
console.log(SE)
que je ne comprends pas, car cela signifie que le script a accès à la Objet SE.
Par "ne fonctionne pas", je veux dire qu'il ne fait rien; rien n'est enregistré sur la console après la première console.log(SE)
.
Je ne comprends pas comment faire fonctionner cette bibliothèque. Quelqu'un a-t-il une idée? Cela concerne le sandbox activé sur Firefox lorsqu'une valeur d'attribution est définie. Soit dit en passant, cela fonctionne sur Chrome de toute façon, mais je crois comprendre que les deux sandbox sont considérablement différents. Est-il possible de contourner ce sandbox Firefox qui empêche la fonction SE.init()
de s'exécuter? J'ai essayé unsafeWindow.SE...
mais cela ne fonctionne pas - je ne pense pas que cela devrait faire la différence parce que le script a toujours accès à l'objet SE; c'est juste avoir du mal à l'appeler!
Votre fonction doit être exportée dans le contexte de la page Web: [Écoute d'un événement de mon script greasemonkey] (http://stackoverflow.com/a/38357589) – wOxxOm
@wOxxOm hmm J'essaie 'exportFunction (SE, unsafeWindow , {defineAs: 'SE'}); 'mais cela ne semble pas fonctionner:/ –
@wOxxOm même l'exportation de cette fonction dans l'ensemble ne fait rien:' complete: exportFunction (function (d) {console.log (d) ; console.log ('SE init');}, unsafeWindow) '.C'est comme si le code ne passait pas le début de SE.init! –