で Greasemonkey スクリプトを作成し、@include *
YouTube などのサイトにアクセスすると、更新するたびにスクリプトが 20 回以上実行されます。これはFirefox上であり、Chromeについてはわかりません。
これを防ぐ方法はありますか?
2 に答える
まず、おそらくスクリプトを iFrame で実行したくないでしょう。2014 年 10 月現在、Greasemonkey と Tampermonkey の両方で機能するようになったディレクティブ
を使用して、これをブロックできます。@noframes
古いバージョンの場合、または をサポートしていないスクリプト エンジン@noframes
の場合は、メタデータ ブロックの直後に次のコードを使用できます。
if (window.top != window.self) //don't run on frames or iframes
{
//Optional: GM_log ('In frame');
return;
}
2 つ目は、ページの読み込み時に GM コードを 1 回待機して実行できることです。すべてを a でラップし、次のようmain()
にイベントで呼び出します。load
window.addEventListener ("load", LocalMain, false);
function LocalMain () {
// Your code goes here.
}
// @exclude
第 3 に、メタデータ ブロックにディレクティブを追加して、サイトまたはページを除外できます。
全体として、可能であれば、普遍的に含まれる GM スクリプトを避けるのが最善です。
他の方法では、フラグを設定したり、URL パラメーターを使用してページをリロードしたりする場合があります。これらは扱いにくいので、最後の手段として保存してください。
たとえば、指定された場所を永続変数に格納できます。ページの読み込み時に、現在の場所がこの変数に既に格納されているかどうかを確認する必要があります。
そうでない場合は、変数を設定して関数を実行します。はいの場合は何もしません。
永続変数の保存方法: GM_setValue