如何使用 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);
行。但是,如果你这样做,事情可能会变得混乱。
我试图每隔几分钟将选项卡重定向到 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);
行。但是,如果你这样做,事情可能会变得混乱。