我的 Greasemonkey 脚本中的 setInterval() 忽略给定的时间并不断执行
我有编程经验,但我对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() 函数尝试过它,它具有与上面相同的效果。在许多不同的地方抛出 wait(10000) 也是如此。
我使用的是 firefox 10.0.2,昨天我得到了greasemonkey,所以它是最新版本。
经过大量查找后,我确实注意到一个奇怪的现象,即 setInterval() 语法将函数名称(参数 1)放在引号中,如下所示:
var i = setInterval("pageReload()",10000);
这会导致脚本不执行任何操作。如果没有引号,它会运行但无法正常运行。
先发制人:我已删除并重新安装了脚本。
I have experience with programming but I am new to greasemonkey and javascript. I am made a simple greasemonkey script that reloads a page every 10 seconds. The reload works, but the pause does not so the page reloads over and over again.
This is the code I am using:
// ==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();
}
I've tried this with the setTimeout() function and it has the same effect as above. Ditto with throwing a wait(10000) in many different places.
I am using firefox 10.0.2 and I got greasemonkey yesterday so it's the latest version.
One oddity I did notice after a lot of lookup is that the setInterval() syntax has the function name (parameter 1) in quotes, like this:
var i = setInterval("pageReload()",10000);
This causes the script to do nothing. Without the quotes, it runs but not properly.
Pre-emptive: I have deleted and reinstalled the script.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您现在正在直接调用该函数(末尾的额外括号)。尝试删除它们:
或者,更好的是,只使用匿名函数,因为您不会多次使用该函数:
You're calling the function directly at the moment (the extra brackets at the end). Try removing them:
Or, better yet, just use an anonymous function, since you're not going to use that function more than once:
括号:
setInterval(pageReload(),10000)
调用
pageReload()
将其返回的任何内容分配给setInterval
,反而;setInterval(pageReload,10000)
。The parens:
setInterval(pageReload(),10000)
call
pageReload()
assigning whatever it returns tosetInterval
, instead;setInterval(pageReload,10000)
.