你好我正在写一个代码,用于自动注销不活动大约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();
});
我希望代码应该用鼠标移动和键盘按下来 所有的帮助表示赞赏请给我一些建议
答案 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);
希望它有所帮助。