9

私は JavaScript と Greasemonkey の初心者で、簡単なスクリプトを書きたいと思っています。

Greasemonkey が匿名関数でコードをラップしているため、現在のページを離れた後に変数が存在しないことはわかっています。ただし、グローバル変数が必要です。unsafeWindow と window オブジェクトを次のように使用しようとしました。

if (window.myVar == undefined) {
   window.myVar = "myVar";
}

ページを更新すると、条件の値は常に true になります。

Greasemonkey でグローバル変数を使用する方法はありますか?

4

4 に答える 4

21

ページのjavascriptスコープで使用できるグローバル変数を作成するには、unsafeWindowを使用する必要があります。

if (unsafeWindow.myVar == undefined) {
   unsafeWindow.myVar = "myVar";
}

ただし、通常のJavaScriptはそのように機能しないため、ページを更新するときにこの変数が存在することは期待できません。ページの読み込み全体でデータを保存する場合は、GM_setValueGM_getValueを使用することをお勧めします

于 2010-07-24T06:11:32.827 に答える
4

グローバル変数を使用していますが、グローバル変数は、ページが更新されている間だけ存続し、すべてのグローバル変数をクリアしています。ページの更新後にデータを保存する唯一の方法は、Cookie、サーバーへのアップロード、または HTML5 ストレージ API を使用することです。グリースモンキーでは、おそらくクッキーを使用したいと思うでしょう。

于 2010-07-23T20:39:50.470 に答える
3

GreaseMonkey でグローバル変数を設定するには、 を使用します@grant none。それ以外の場合はunsafeWindow、GreaseMonkey でのみ使用できる を使用します。いくつかのセキュリティ上の懸念があります。http://wiki.greasespot.net/@grantを参照

于 2014-06-25T19:11:16.807 に答える
-5

複数のページ更新で変数を維持しようとしている場合は、それを Cookie に保存する必要があります。

ただし、単一ページのスコープ内でグローバル変数が必要な場合は、次のようにします。

var imGlobal;
(function(){ // Greasemonkey crap...
...
imGlobal = "Totally";
})();
alert(imGlobal) // Alerts "Totally"
于 2010-07-24T06:36:05.187 に答える