2012-02-21 8 views
0

私はプログラミングの経験がありますが、私はgreasemonkeyとjavascriptを初めて使用しています。私は10秒ごとにページをリロードするシンプルなgreasemonkeyスクリプトを作成しました。リロードは機能しますが、一時停止してもページは何度も何度もリロードされません。私のgreasemonkeyスクリプトのsetInterval()は与えられた時間を無視して常に実行します

// ==UserScript== 
// @name   my script 
// @namespace  http://example.com 
// @include  http://*.example.com/page.html* 
// ==/UserScript== 



var i = setInterval(pageReload(),10000); 

function pageReload() { 
    window.location.reload(); 
} 

を私はsetTimeoutを()関数でこれを試してみたし、それは、上記と同じ効果があります:

これは私が使用していたコードです。多くの異なった場所で待ち時間(10000)を投げつけることで同上。

私はfirefox 10.0.2を使用しています。昨日greasemonkeyを入手しましたので、最新バージョンです。

var i = setInterval("pageReload()",10000); 

これは何もしないためのスクリプトが発生します。私は、ルックアップの多くの後に予告をした

一つ奇妙にしたsetInterval()の構文は次のように、引用符で関数名(パラメータ1)を有することです。引用符がないと、実行されますが正しくはありません。

プリエンプティブ:スクリプトを削除して再インストールしました。

+0

'のsetInterval(pageReload()、10000を); 'あなたは** ** pageReload'を実行し、その戻り値を' setInterval'に渡しています。代わりに関数参照を渡します。引用符で動作しないのは、文字列がグローバルスコープで評価され、 'pageReload'がグローバルでないと仮定しているからです。 –

+1

[function in setInterval()の重複可能性が遅れて実行されない](0120-18752)//function-in -setinterval-executes-without-delay –

答えて

2

括弧:

setInterval(pageReload(),10000)

コールpageReload()はなく、それはsetIntervalに戻るどの割り当てます。

setInterval(pageReload,10000)

+0

ありがとう、これは問題でした。私はそれが今までにどのように期待されているかを研究している。 –

3

あなたはその時点で直接関数を呼び出しています(末尾の角かっこ)。それらを削除してください:

var i = setInterval(pageReload,10000); 

をそれとも、複数回その関数を使用するつもりはないことから、いっそのこと、ちょうど、無名関数を使用します。

var i = setInterval(function() { 
      window.location.reload(); 
     }, 10000); 
関連する問題