使用超时,增加超时,然后像下面再次致电超时。
在下面的示例中,我们在500ms中调用超时,然后我们加倍,以1000ms的重新调用,将其翻倍至2000毫秒,等等。eDit
我不确定您希望它如何工作,但是将您的jQuery添加到混合中会看起来像这样。一旦您停止了超时,一旦您停止移动超时就开始返回
mousemove
500ms
let timeout
let interval = 500
let maxTime = 10000
function myTimeout() {
console.log("Delayed: " + interval + "ms")
interval *= 2
if(interval < maxTime) {
timeout = setTimeout(myTimeout, interval)
} else {
console.log("I am exiting!")
}
}
$(document).ready(function () {
// Zero the idle timer on mouse movement.
$(document).on('mousemove', function (e) {
clearTimeout(timeout)
interval = 500
timeout = setTimeout(myTimeout, interval)
});
$(document).on('keypress', function (e) {
clearTimeout(timeout)
interval = 500
timeout = setTimeout(myTimeout, interval)
});
// Start the Timeouts
timeout = setTimeout(myTimeout, interval)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
var time = 5000;
var idleInterval;
$(document).ready(function () {
idleInterval = setInterval(timerIncrement, time);
$(this).on('mousemove', function (e) {
idleTime = 0;
time = 5000;
clearInterval(idleInterval);
idleInterval = setInterval(timerIncrement, time);
});
$(this).on('keypress', function (e) {
idleTime = 0;
time = 5000;
clearInterval(idleInterval);
idleInterval = setInterval(timerIncrement, time);
});
});
function timerIncrement() {
console.log('refreshContent is called after '+time+' milliseconds');
refreshContent();
time = time*2;
if( time > 300000 ) { time = 300000; }
clearInterval(idleInterval);
idleInterval = setInterval(timerIncrement, time);
}
function refreshContent()
{
console.log('Stuffs you want to do when refresh content is called');
}
首先,您无法将Settimeout设置为变量。 。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
var idleTime = 0;
var time = 5000;
var currentActiveTimeoutId = 0;
$(document).ready(function () {
// Zero the idle timer on mouse movement.
$(this).on('mousemove', function (e) {
idleTime = 0;
time = 5000;
//reset timeout counter
setTimeoutCounter(time);
});
$(this).on('keypress', function (e) {
idleTime = 0;
time = 5000;
//reset timeout counter
setTimeoutCounter(time);
});
setTimeoutCounter(time);
});
//function to set the timeout and call the incrementor
function setTimeoutCounter(timeOut){
//clear previous timeout created
clearTimeout(currentActiveTimeoutId);
currentActiveTimeoutId = setTimeout(timerIncrement, timeOut);
}
function timerIncrement() {
idleTime = idleTime + 1;
if (idleTime > 1) {
time = time*2;
if( time > 300000 ) { time = 300000; }
refreshContent();
//recall set timeout and apply the next value of time
setTimeoutCounter(time);
}
}
当触发(或达到最大时间)
时,
keypress
mousemove
2K25中的同样需求)
keypress