Предположим, что пользователь может использовать свою учетную запись в течение 60 минут без какой-либо активности. И через 58 минут нужно показать одно всплывающее окно с надписью «Ваша система собирается выйти из системы. Нажмите OK, чтобы войти».
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 на одной вкладке. Он все еще выходит из другой вкладки (что связано с $(window).load(function() {});
в main.js файл, который выполняется для всех вкладок, в результате чего для этой конкретной вкладки устанавливается разное время). Как показать, что конкретный выход всплывающий на всех вкладках одновременно?
Я пытался использовать локальное хранилище. Но не смог этого добиться. Любая помощь / подсказка / предложения заметны.
В соответствии с идеей локального хранилища, как насчет установки значения «Reset Logout Timer» всякий раз, когда пользователь нажимает «OK», а затем с помощью прослушивателей событий для обнаружения изменений и сброса таймеров? Вам нужно будет сохранить дескриптор тайм-аута, чтобы сбросить его позже.
Что-то вроде:
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());
}
Других решений пока нет …