假设用户可以使用他们的帐户60分钟而没有任何不活动。并且,在58分钟内,需要显示一个警告,说出" 您的系统即将退出。按确定以登录"。
main.js
$(window).load(function() {
//Auto Logout
autoLogoutPopUp(auto_logout_time);
automaticallyLogout(logout_time);
});
function autoLogoutPopUp(time){
setTimeout(function(){showAutoLogoutPopUp();}, time);
}
function automaticallyLogout(time){
setTimeout(function(){
window.location.href = "logout";
}, time);
}
现在发生了什么。对于一个标签,它没问题。它工作正常。但是,当打开多个标签时,如果我在一个标签中按OK。它仍然会从另一个标签退出(这是由于 main.js 文件中的$(window).load(function() {});
,该文件会针对所有标签执行,从而为该特定标签设置不同的时间)。如何在同一时间显示所有选项卡的特定注销?
我尝试使用本地存储空间。但是,无法实现它。任何帮助/提示/建议都很明显。
答案 0 :(得分:0)
保持本地存储理念,每当用户单击“确定”然后使用事件侦听器检测更改并重置计时器时,如何设置“重置注销计时器”值?你必须存储超时句柄以便以后重置它。
类似的东西:
var popupTimerHandle;
var logoutTimerHandle;
// When the local storage data gets changed, clear the existing timer and recreate it
window.addEventListener('storage', function(event){
if (event.key == 'reset-logout-timer') {
window.clearTimeout(popupTimerHandle);
window.clearTimeout(logoutTimerHandle);
AutoLogoutPopUp(auto_logout_time);
AutomaticallyLogout(logout_time);
}
});
function AutomaticallyLogout(time){
logoutTimerHandle = setTimeout(function(){
window.location.href = "logout";
}, time);
}
function AutoLogoutPopUp(time){
popupTimerHandle = setTimeout(function(){showAutoLogoutPopUp();}, time);
}
// Called when the user clicks "OK" to stay logged in.
// The value doesn't matter as long as the change is registered
function TriggerLogoutTimerReset() {
localStorage.setItem('reset-logout-timer', Math.random());
}