読み込まれた後、ページ上の関数を呼び出すためにgreasemonkeyを取得するにはどうすればよいですか
-
22-07-2019 - |
質問
非常に単純なグリースモンキースクリプトがあり、そのページに既に存在するjavascript関数を呼び出したい。ドキュメントを読みましたが、何も機能していないようです
window.setTimeout(function() {
alert('test') // This alert works, but nothing after it does
myFunction() // undefined
window.myFunction() // undefined
document.myFunction() // undefined
}, 1000);
解決
使用してみてください: unsafeWindow.myFunction();
他のヒント
元のページで関数を呼び出す1つの方法は次のとおりです。
location.href = "javascript:void(myFunction());";
少しいです。 GreaseMonkeyが提供する unsafeWindow もありますが、作成者は使用をお勧めしません。
unsafeWindow.myFunction();
見栄えは良いが、その影響を理解してください。マニュアルから:
unsafeWindowはGreasemonkeyをバイパスします XPCNativeWrapperベースのセキュリティモデル、 を確認するために存在します 悪意のあるWebページは変更できません 作るような方法でオブジェクト 実行するgreasemonkeyスクリプト 通常よりも多くの特権を持つ Webページで実行されているJavascript)do 著者またはユーザーがしたこと 意図しない。ユーザースクリプトは したがって、電話をかけたり、 プロパティに応じた他の方法 unsafeWindowの場合-特に 任意のWebページに対して実行されます。 @include *を含むものなど、 ページ作成者が破壊した可能性があります この方法で環境を。
つまり、unsafeWindowを使用すると、スクリプトは元のページスクリプトで使用可能な特権を昇格します。
javascriptイベントリスナーを使用してみてください。
これらは、発生したオブジェクトイベント(ページの読み込みなど)への応答でコードを実行します
たとえば、ページの読み込み時にコードを実行するには:
window.addEventListener('load', function ()
{
/* code goes here */
}