1

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(它的秒数 = 45min),如果没有事件发生,它的减量(2698..2697..等等),如果有任何事件(鼠标向上..etc)发生它回到 2699

但我需要在几分钟内: 44: 59、44:58 ..等等

4

3 回答 3

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>

于 2017-08-21T05:10:58.157 回答
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/

于 2017-08-21T05:11:14.987 回答
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);

所以秒总是两位数

于 2017-08-21T05:13:49.250 回答