如何使用 Tampermonkey/Greasemonkey 脚本设置持久的全局超时?

How to set a persistent global timeout using a Tampermonkey/Greasemonkey script?

我试图每隔几分钟将选项卡重定向到 http://google.com,无论选项卡发生什么情况(当然它仍然打开)。

我正在使用:

setTimeout(function() {
    window.location.href = "http://google.com";
}, 500000);

但是,只要我在选项卡中加载新页面,计数器就会刷新。
有没有办法为选项卡设置全局时间倒计时,这样无论我加载什么,我仍然每隔几分钟就会被重定向一次?

在页面加载之间保持计时器的一种方法是使用 GM_setValue()Doc

这里是一个完整的Tampermonkey/Greasemonkey脚本,说明了该过程:

// ==UserScript==
// @name     _Persistent redirect timer
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant    GM_getValue
// @grant    GM_setValue
// ==/UserScript==
var timerLength = 500000;   //- 500,000 milliseconds

var timerStart  = GM_getValue ("timerStartKey");
if (timerStart)
    timerStart  = JSON.parse (timerStart);
else
    resetTimerStart ();

/*-- RECOMMENDED: If too much time has passed since the last page load,
    restart the timer.  Otherwise it will almost instantly jump to the
    redirect page.
*/
checkElapsedAndPossiblyRedirect (true);
console.log ("timerStart: ", timerStart);

//-- Polling every 10 seconds is plenty
setInterval (checkElapsedAndPossiblyRedirect, 10 * 1000);

function resetTimerStart () {
    timerStart  = new Date().getTime ();
    GM_setValue ("timerStartKey", JSON.stringify (timerStart) );
}

function checkElapsedAndPossiblyRedirect (bCheckOnly) {
    if ( (new Date().getTime() ) - timerStart  >=  timerLength) {
        resetTimerStart ();
        if ( ! bCheckOnly) {
            console.log ("Redirecting.");
            window.location.href = "http://google.com";
        }
    }
}

根据您的意图,您可能希望注释掉 checkElapsedAndPossiblyRedirect (true); 行。但是,如果你这样做,事情可能会变得混乱。