我的greasemonkey脚本中的setInterval()忽略给定的时间并不断执行

时间:2012-02-21 14:13:23

标签: javascript greasemonkey settimeout setinterval wait

我有编程经验,但我是关于greasemonkey和javascript的新手。我做了一个简单的greasemonkey脚本,每10秒重新加载一页。重新加载有效,但暂停不会使页面一遍又一遍地重新加载。

这是我正在使用的代码:

// ==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,所以这是最新版本。

经过大量查询后我注意到的一个奇怪的是setInterval()语法在引号中有函数名(参数1),如下所示:

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

这会导致脚本无效。没有引号,它会运行但不正确。

先发制人:我已删除并重新安装了该脚本。

2 个答案:

答案 0 :(得分:3)

您此刻直接调用该函数(结尾处的额外括号)。尝试删除它们:

var i = setInterval(pageReload,10000);

或者,更好的是,只使用匿名函数,因为您不会多次使用该函数:

var i = setInterval(function() {
            window.location.reload();
        }, 10000);

答案 1 :(得分:2)

parens:

setInterval(pageReload(),10000)

调用 pageReload()将其返回的内容分配给setInterval,而不是;

setInterval(pageReload,10000)