javascript自动注销10分钟的非活动状态

javascript autologout for inactivity for 10 minutes

本文关键字:活动状态 10分钟 注销 javascript      更新时间:2023-09-26

大家好,我正在写一个代码,用于自动注销约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();
});

我希望代码应该与鼠标移动和键盘按压结合在一起感谢您的帮助,请给我推荐一些

首先,您不应该以这种方式使用setTimeout-非活动选项卡的速度越来越慢,因此无法保证您的代码在14分钟内执行完毕。更好的方法是反复检查经过的时间。

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

您可以通过以下方式跟踪活动:

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

希望能有所帮助。