javascript autologout表示不活动10分钟

时间:2015-12-23 09:20:45

标签: javascript timer

你好我正在写一个代码,用于自动注销不活动大约20分钟,这应该与键盘和鼠标交互,我有以下代码,适用于大多数功能,但它没有重置鼠标移动的计时器和键盘活动。

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();
});

我希望代码应该用鼠标移动和键盘按下来 所有的帮助表示赞赏请给我一些建议

1 个答案:

答案 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);

希望它有所帮助。