2017-08-21 4 views
0

Session Timeout - Ergebnisse in wenigen Minuten

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>

So von oben Ich erhalte Ausgabe als 2699 (seine in Sekunden = 45 Minuten), und wenn kein Ereignis seine Verringerungen passieren (2698..2697..and so on) und wenn irgendein Ereignis (Maus up..etc)

den Rücken zu 2699 passieren, aber ich muss in wenigen Minuten das ist: 44:59, 44:58 ..und so weiter

+1

Schauen Sie sich in diesem Fall für Ihre Formatierung muss https://stackoverflow.com/questions/3733227/javascript-seconds-to-minutes- und Sekunden – Scuzzy

+0

Welchen Browser benutzen Sie? –

+0

ich benutze Firefox – user3209031

Antwort

1

Hier ist, wie ich es lesbar sein codieren würde

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"; 
    } 
} 

verwendet

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

so dass Sekunden sind immer zwei Ziffern

+0

Hey Jaromanda, danke seine Arbeit ... eine weitere Frage Sitzung Timeout-Ereignis funktioniert nicht auf allen Registerkarte gleich ... ich meine sagen ... wenn ich 2 Registerkarten im selben Browser geöffnet habe , also in einem Tab sein 44:06 und auf dem zweiten Tab sein 44:58 ... wenn ich meinen ersten Tab aktualisiere ..dann es zu 44:59 zurückkehrt, aber wenn ich meinen zweiten Tab sehe zeigt es 43:34 ... .so meine Frage ist, kann ich ein Popup machen, wenn Timeout ist weniger als 1 min .. sagen, Sie werden in 1 min abmelden und wenn Benutzer klicken ok er/sie wird abmelden und wenn er Nein dann seine Auto-Reset – user3209031

+0

keine Ahnung was Sie fragen hier ... versuchen Sie das Timeout in mehreren Browser-Tabs zu synchronisieren? benutze localStorage vielleicht, oder BroadcastChannel in firefox/chrome –

+0

ja synchronisiere das selbe Zeitlimit in allen Tabs ..wenn ich auf einem Tab aktualisiere ... automatisch alle anderen Tabs zurücksetzen – user3209031

2

Verwenden parseInt((IDLE_TIMEOUT - _idleSecondsCounter)/60) + ":" + (IDLE_TIMEOUT - _idleSecondsCounter)%60; zu erreiche hh: mm Wirkung

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 danke und Code aktualisiert. Jetzt wird es zeigen '1: 01' –

1

Haben Sie diese Funktion benötigen

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); 
} 

Demo: https://jsfiddle.net/ttqtfwp5/1/