注销弹出以同时进入所有选项卡

时间:2018-02-14 15:06:23

标签: php jquery settimeout

假设用户可以使用他们的帐户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() {});,该文件会针对所有标签执行,从而为该特定标签设置不同的时间)。如何在同一时间显示所有选项卡的特定注销?

我尝试使用本地存储空间。但是,无法实现它。任何帮助/提示/建议都很明显。

1 个答案:

答案 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());
}