Olá,
Eu sou novo no Greasemonkey.
Existe alguma maneira de chamar uma função em outro script de usuário do Greasemonkey?
Obrigado.
não, a menos que o outro script faça algum esforço para expor APIs por alguns meios.
Não há um método interno para fazer isso, mas há uma solução alternativa.
Script com função exposta:
unsafeWindow.hello = hello;
function hello() {alert("hello world");}
Script para chamar a função
hello();
Essa é a questão.
é claro que isso também significa que pode ser chamado a partir do site, não apenas de outros scripts de usuário
Verdade. Dê a ele um parâmetro de senha.
Tem que ser a mesma guia.
// ==UserScript==
// <strong i="5">@name</strong> Test call 1
// <strong i="6">@namespace</strong> https://github.com/tiansh/
// <strong i="7">@include</strong> http://example.com/
// <strong i="8">@version</strong> 1
// <strong i="9">@grant</strong> unsafeWindow
// ==/UserScript==
unsafeWindow.x = function (str, callback) {
console.log('%o.x: %o', this, arguments);
alert('x says: ' + str);
callback(str + 'from x');
};
// ==UserScript==
// <strong i="12">@name</strong> Test call 2
// <strong i="13">@namespace</strong> https://github.com/tiansh/
// <strong i="14">@include</strong> http://example.com/
// <strong i="15">@version</strong> 1
// <strong i="16">@grant</strong> unsafeWindow
// ==/UserScript==
setTimeout(function () {
unsafeWindow.x('hello', function (nstr) {
console.log('%o.y: %o', this, arguments);
alert('y says: ' + nstr);
});
}, 0);
Os scripts
@tiansh , neste exemplo, a proteção do sandbox foi desabilitada por <strong i="6">@grant</strong> unsafeWindow
.
@pyhedgehog Você tentou? Com GM 2/3?