読み込まれた後、ページ上の関数を呼び出すためにgreasemonkeyを取得するにはどうすればよいですか

StackOverflow https://stackoverflow.com/questions/443430

  •  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();

詳細と情報- http://wiki.greasespot.net/UnsafeWindow

他のヒント

元のページで関数を呼び出す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 */
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top