2015-12-23 2 views
0

привет всем, я пишу код для автоматического выхода из системы бездействия в течение 20 минут, который должен взаимодействовать с клавиатурой, а также с мышью, и у меня есть следующий код, который работает для большей части функции, но это не сбрасывая таймер для движения мыши и активности клавиатуры.javascript autologout для неактивности в течение 10 минут

var timoutWarning = 9000; // Display warning in 14 Mins. 
var timoutNow = 9000; // Warning has been shown, give the user 1 minute to interact 
var logoutUrl = 'logout.php'; // URL to logout page. 

var warningTimer; 
var timeoutTimer; 

// Start warning timer. 
function StartWarningTimer() { 
    warningTimer = setTimeout("IdleWarning()", timoutWarning); 
} 

// Reset timers. 
function ResetTimeOutTimer() { 
    clearTimeout(timeoutTimer); 
    StartWarningTimer(); 
    $("#timeout").hide(); 
} 

// Show idle timeout warning dialog. 
function IdleWarning() { 
    clearTimeout(warningTimer); 
    timeoutTimer = setTimeout("IdleTimeout()", timoutNow); 
    $("#timeout").show(); 
} 

// Logout the user. 
function IdleTimeout() { 
    window.location = logoutUrl; 
} 
$(document).ready(function() { 
    StartWarningTimer(); 
}); 
$('html').mousemove(function() { 
    ResetTimeOutTimer(); 
}); 

я хочу код должен intract с движением мыши и клавиатуры нажмите все виды помощи ценится пожалуйста, предложите мне что-то

+0

Возможно, вам захочется взглянуть на 'onmousemove' http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onmousemove и' onkeypress' http://www.w3schools.com/jsref/tryit .asp? filename = tryjsref_onkeypress – niksofteng

+0

Прослушайте свой заголовок. –

ответ

0

На первом, вы не должны использовать setTimeout таким образом - неактивные вкладки getting slower, так нет гарантии, что ваш код будет выполнен через 14 минут. Лучший способ сделать это - проверить повторно прошедшее время.

var startTime = +new Date(); 
function checkForWarning() { 
    if (+new Date() - startTime > maxInactiveTime) { 
     // show warning 
    } 
} 

Вы можете отслеживать активность следующим образ:

$(document) 
    .on('click', ResetTimeOutTimer) 
    .on('mousemove', ResetTimeOutTimer); 

Надеется, что это помогает.

+0

Вы можете объяснить свой код еще ... Я не могу понять, как это сделать. –

+0

Вам нужно рассчитать прошедшее время по разнице между текущим временем и моментом начала подсчета. это надежный способ. И это то, что делает мой код - мы помним момент, когда мы начали в startTime. Затем идет метод (checkForWarning), который проверяет, нет ли времени или нет. Мы должны называть это повторно, как этот setTimeout (checkForWarning, 1000 * 60) –

Смежные вопросы