2017-08-21 73 views
0

会话超时 - 结果分钟

var IDLE_TIMEOUT = 2700; //seconds 45min 
 

 
var _idleSecondsCounter = 0; 
 
document.onclick = function() { 
 
    _idleSecondsCounter = 0; 
 
}; 
 
document.onmousemove = function() { 
 
    _idleSecondsCounter = 0; 
 
}; 
 

 
document.onkeypress = function() { 
 
    _idleSecondsCounter = 0; 
 
}; 
 
window.setInterval(CheckIdleTime, 1000); 
 

 
function CheckIdleTime() { 
 
    _idleSecondsCounter++; 
 
    var oPanel = document.getElementById("SecondsUntilExpire"); 
 
    if (oPanel) 
 
    oPanel.innerHTML = (IDLE_TIMEOUT - _idleSecondsCounter) + ""; 
 
    if (_idleSecondsCounter >= IDLE_TIMEOUT) { 
 
    //alert("Your Session Time expired. Please Login."); 
 
    document.location.href = "logoff.php"; 
 
    } 
 
}
<div id='SecondsUntilExpire'></div>

所以从上面我得到的输出为2699(其以秒= 45分钟),如果没有事件发生的递减(2698..2697..and所以上),如果任何事件(鼠标up..etc)发生了回2699

但我需要在几分钟内那:44:59,44:58 ..和等

+1

退房这种情况下,您需要格式化https://stackoverflow.com/questions/3733227/javascript-seconds-to-minutes- and-seconds – Scuzzy

+0

你使用什么浏览器? –

+0

我正在使用火狐 – user3209031

回答

1

以下是我想编写代码的时候是可读

function CheckIdleTime() { 
    _idleSecondsCounter++; 
    var oPanel = document.getElementById("SecondsUntilExpire"); 
    var remain = IDLE_TIMEOUT - _idleSecondsCounter; 
    var remainMinutes = Math.floor(remain/60); 
    var remainSeconds = ('0' + (remain % 60)).substr(-2); 
    if (oPanel) 
     oPanel.innerHTML = remainMinutes + ':' + remainSeconds; 
    if (_idleSecondsCounter >= IDLE_TIMEOUT) { 
     //alert("Your Session Time expired. Please Login."); 
     document.location.href = "logoff.php"; 
    } 
} 

使用

var remainSeconds = ('0' + (remain % 60)).substr(-2); 

使秒总是两位数

+0

嘿Jaromanda,感谢它的工作...一个问题会话超时事件不工作在所有标签相同...我的意思是说...如果我已经在同一浏览器中打开2个选项卡,所以在一个标签44:06,第二个标签44:58 ...如果我刷新我的第一个标签..然后恢复到44:59,但如果我看到我的第二个标签显示43:34 ... .so我的问题是,如果超时时间少于1分钟,我可以弹出一个弹出窗口..说你将在1分钟内注销,如果用户点击确定,他/她将注销,如果他没有,那么它的自动重置 – user3209031

+0

不知道什么你问这里...你是否试图在多个浏览器标签中同步超时?使用localStorage也许,或者在Firefox/Chrome中的BroadcastChannel –

+0

是同步所有标签中的同一超时..如果我在一个标签刷新...自动重置所有其他标签 – user3209031

2

使用parseInt((IDLE_TIMEOUT - _idleSecondsCounter)/60) + ":" + (IDLE_TIMEOUT - _idleSecondsCounter)%60;到达到个HH:MM效果

var IDLE_TIMEOUT = 2700; //seconds 45min 
 

 
var _idleSecondsCounter = 0; 
 
document.onclick = function() { 
 
    _idleSecondsCounter = 0; 
 
}; 
 
document.onmousemove = function() { 
 
    _idleSecondsCounter = 0; 
 
}; 
 

 
document.onkeypress = function() { 
 
    _idleSecondsCounter = 0; 
 
}; 
 
window.setInterval(CheckIdleTime, 1000); 
 

 
function CheckIdleTime() { 
 
    _idleSecondsCounter++; 
 
    var oPanel = document.getElementById("SecondsUntilExpire"); 
 
    if (oPanel) 
 
     oPanel.innerHTML = parseInt((IDLE_TIMEOUT - _idleSecondsCounter)/60) + ":"; 
 
     oPanel.innerHTML += (IDLE_TIMEOUT - _idleSecondsCounter)%60<10?"0"+(IDLE_TIMEOUT - _idleSecondsCounter)%60:(IDLE_TIMEOUT - _idleSecondsCounter)%60; 
 
    if (_idleSecondsCounter >= IDLE_TIMEOUT) { 
 
     alert("Your Session Time expired. Please Login."); 
 
     //document.location.href = "logoff.php"; 
 
    } 
 
}
<div id='SecondsUntilExpire'></div>

+0

@JaromandaX感谢和代码更新。现在它会显示'1:01' –

1

您是否需要此功能

var IDLE_TIMEOUT = 2700; 
    alert(getMinutes(IDLE_TIMEOUT)); 
    function getMinutes(time){ 
     minutes = time/60; 
     seconds = time%60; 
     return ("00" + minutes).substr(-2)+":"+("00" + seconds).substr(-2); 
} 

演示:https://jsfiddle.net/ttqtfwp5/1/