Greasemonkey: Como chamar uma função em outro script de usuário do Greasemonkey?

Criado em 28 out. 2016  ·  8Comentários  ·  Fonte: greasemonkey/greasemonkey

Olá,

Eu sou novo no Greasemonkey.
Existe alguma maneira de chamar uma função em outro script de usuário do Greasemonkey?

Obrigado.

Todos 8 comentários

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?

Esta página foi útil?
0 / 5 - 0 avaliações