Greasemonkey: Wie rufe ich eine Funktion in einem anderen Greasemonkey-Benutzerskript auf?

Erstellt am 28. Okt. 2016  ·  8Kommentare  ·  Quelle: greasemonkey/greasemonkey

Hi,

Ich bin neu bei Greasemonkey.
Gibt es eine Möglichkeit, eine Funktion in einem anderen Greasemonkey-Benutzerskript aufzurufen?

Vielen Dank.

Alle 8 Kommentare

Nein, es sei denn, das andere Skript unternimmt einige Anstrengungen, um APIs auf irgendeine Weise verfügbar zu machen.

Es gibt keine interne Methode dafür, aber es gibt einen Workaround.

Skript mit exponierter Funktion:

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

Skript zum Aufrufen der Funktion

hello();

Das ist der springende Punkt.

Das bedeutet natürlich auch, dass es von der Website aus aufgerufen werden kann, nicht nur von anderen Benutzerskripten

Wahr. Geben Sie ihm einen Passwortparameter.

Es muss dieselbe Registerkarte sein.

// ==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- Skripte auf der Seite der Website können Ihre Funktion aufgrund des Sandbox-Schutzes nicht aufrufen.

@tiansh , in diesem Beispiel wurde der Sandbox-Schutz von <strong i="6">@grant</strong> unsafeWindow deaktiviert.

@pyhedgehog Hast du es versucht? Mit GM 2/3?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen