Greasemonkey: Bagaimana cara memanggil fungsi dalam skrip pengguna Greasemonkey lain?

Dibuat pada 28 Okt 2016  ·  8Komentar  ·  Sumber: greasemonkey/greasemonkey

Hai, yang di sana,

Saya baru mengenal Greasemonkey.
Apakah ada cara untuk memanggil fungsi di skrip pengguna Greasemonkey lain?

Terima kasih.

Semua 8 komentar

tidak, kecuali jika skrip lain berusaha untuk mengekspos API melalui beberapa cara.

Tidak ada metode internal untuk melakukannya, tetapi ada solusi.

Skrip dengan fungsi terbuka:

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

Skrip untuk memanggil fungsi

hello();

Itulah intinya.

tentu saja itu juga berarti dapat dipanggil dari situs web, bukan hanya skrip pengguna lain

Benar. Berikan parameter kata sandi.

Itu harus tab yang sama.

// ==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 skrip di halaman dari situs web tidak dapat memanggil fungsi Anda karena perlindungan kotak pasir.

@tiansh , dalam contoh ini perlindungan kotak pasir dinonaktifkan oleh <strong i="6">@grant</strong> unsafeWindow .

@pyhedgehog Sudahkah Anda mencoba? Dengan GM 2 / 3?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat