我已经使用javascript编写了用于会话超时的代码,其工作正常,还显示了警报弹出窗口和到期时间正常 但是鼠标移动或按键重置计时器时出现一个错误,重置后的时钟显示为两倍,倍数........ 请帮助解决此错误,我的代码在这里
会话超时
您将在1分钟内自动退出。
要保持登录状态,请将鼠标移到该窗口上。
<script type="text/javascript">
// Set timeout variables.
var timoutWarning = 60000; //60000 Display warning in 1 Mins.
var timoutNow = 120000; // Timeout in 1 mins.
var logoutUrl = '/Logout.aspx'; // URL to logout page.
var warningTimer;
var timeoutTimer;
// Start timers.
function StartTimers() {
warningTimer = setTimeout("IdleWarning()",timoutWarning);
timeoutTimer = setTimeout("IdleTimeout()",timoutNow);
}
// Reset timers.
function ResetTimers() {
clearTimeout(warningTimer);
clearTimeout(timeoutTimer);
StartTimers();
$("#timeout").dialog('close');
}
$(this).mousemove(function (e) {
ResetTimers();
});
$(this).keypress(function (e) {
ResetTimers();
});
// Show idle timeout warning dialog.
function IdleWarning() {
$("#timeout").dialog({
modal: false
});
var fiveMinutes = 60 * 1,display = document.querySelector('#time');
startTimer(fiveMinutes,display);
document.getElementById('dv_time').style.display = "block";
}
// Logout the user.
function IdleTimeout() {
window.location = logoutUrl;
}
//***************************
function startTimer(duration,display) {
var timer = duration,minutes,seconds;
setInterval(function () {
minutes = parseInt(timer / 60,10);
seconds = parseInt(timer % 60,10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
if (--timer < 0) {
timer = duration;
}
},1000);
}