Greasemonkey: Как вызвать функцию в другом пользовательском скрипте Greasemonkey?

Созданный на 28 окт. 2016  ·  8Комментарии  ·  Источник: greasemonkey/greasemonkey

Всем привет,

Я новичок в Greasemonkey.
Есть ли способ вызвать функцию в другом пользовательском скрипте Greasemonkey?

Спасибо.

Все 8 Комментарий

нет, если только другой сценарий не приложит некоторых усилий для предоставления доступа к API каким-либо образом.

Для этого нет внутреннего метода, но есть обходной путь.

Скрипт с открытой функцией:

unsafeWindow.hello = hello;
function hello() {alert("hello world");}

Скрипт для вызова функции

hello();

В этом суть.

конечно, это также означает, что его можно вызывать с веб-сайта, а не только из других пользовательских скриптов.

Правда. Дайте ему параметр пароля.

Это должна быть та же вкладка.

// ==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);

Скрипты @ the8472 на странице с веб-сайта не могут вызывать вашу функцию из-за защиты песочницы.

@tiansh , в этом примере защита песочницы была отключена <strong i="6">@grant</strong> unsafeWindow .

@pyhedgehog Вы пробовали? С GM 2/3?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги