Вопрос звучит тихо, странно. Я знаю, но вот проблема, следующий код работает отлично. Таймер запускается через 30 минут, каждую секунду движение мыши не обнаружено, подсчитывает таймер вниз. Когда обнаружен ход мыши, таймер получает сброс до 30 минут, при 25-минутной отметке бездействия страницы всплывающее окно css показывает отсчет последних 5 минут, через 30 минут пользователь автоматически выходит из системы. Однако, если пользователь открывает страницу, но активно просматривает другую веб-страницу, таймер либо замедляется, либо полностью останавливается в зависимости от браузера. Это фактически отрицает сценарий вообще. Возможно ли, чтобы сценарий продолжал нормальный обратный отсчет и все еще вытеснял пользователя из страницы, даже если они не активно просматривали страницу? Или эти браузерные причуды уменьшают нагрузку на память?Таймер Javascript не запускается, если страница не активна. Страница:
var Timing = 0;
var CounterTime = 0;
var TimePast = 0;
var Seconds = 1800;
var Warn = 1500;
var MinuteLeft = 30;
var SecondLeft = 60;
var StopRefresh = 0;
function ResponseTime()
{
Timing = Timing + 100;
CounterTime = CounterTime + 100;
if(Timing % 1000 == 0)
{
TimePast = TimePast + 1;
SecondLeft = SecondLeft - 1;
if(SecondLeft == 59)
{
MinuteLeft = MinuteLeft-1;
}
if(SecondLeft == 0)
{
SecondLeft = 60;
}
}
if(MinuteLeft != 0)
{
if(SecondLeft == 60)
{
document.getElementById('CountdownTimer').firstChild.nodeValue = MinuteLeft+":00";
}else if(SecondLeft < 10)
{
document.getElementById('CountdownTimer').firstChild.nodeValue = MinuteLeft+":0"+SecondLeft;
}else
{
document.getElementById('CountdownTimer').firstChild.nodeValue = MinuteLeft+":"+SecondLeft;
}
if((MinuteLeft == 0) && (SecondLeft <= 10))
{
document.getElementById('CountdownTimer').style.fontWeight = "bolder";
document.getElementById('CountdownTimer').style.color = "red";
}
document.getElementById('CountdownTimer').style.fontWeight = "normal";
document.getElementById('CountdownTimer').style.color = "black";
}else
{
document.getElementById('CountdownTimer').firstChild.nodeValue = SecondLeft;
if((MinuteLeft == 0) && (SecondLeft <= 10))
{
document.getElementById('CountdownTimer').style.fontWeight = "bolder";
document.getElementById('CountdownTimer').style.color = "red";
}else
{
document.getElementById('CountdownTimer').style.fontWeight = "normal";
document.getElementById('CountdownTimer').style.color = "black";
}
}
if(TimePast == 1800)
{
document.getElementById('DoLogoutRequest').submit();
}
if(MinuteLeft <=4)
{
document.getElementById('Overlay').style.visibility="visible";
document.getElementById('ForceLogout').style.visibility="visible";
}else
{
document.getElementById('Overlay').style.visibility="hidden";
document.getElementById('ForceLogout').style.visibility="hidden";
}
$(document).ready(function(){
$(document).mousemove(function(){
Timing = 0;
TimePast = 0;
SecondLeft = 60;
MinuteLeft = 29;
});
});
}
Я не вижу никаких вызовов setInterval или setTimeout. Как вы запускаете таймер? – j08691