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

发布于 2025-01-07 15:49:36 字数 759 浏览 2 评论 0原文

我有编程经验,但我对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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

源来凯始玺欢你 2025-01-14 15:49:36

您现在正在直接调用该函数(末尾的额外括号)。尝试删除它们:

var i = setInterval(pageReload,10000);

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

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

You're calling the function directly at the moment (the extra brackets at the end). Try removing them:

var i = setInterval(pageReload,10000);

Or, better yet, just use an anonymous function, since you're not going to use that function more than once:

var i = setInterval(function() {
            window.location.reload();
        }, 10000);
要走就滚别墨迹 2025-01-14 15:49:36

括号:

setInterval(pageReload(),10000)

调用pageReload()将其返回的任何内容分配给setInterval,反而;

setInterval(pageReload,10000)

The parens:

setInterval(pageReload(),10000)

call pageReload() assigning whatever it returns to setInterval, instead;

setInterval(pageReload,10000).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文