Выйдите из всех открытых вкладок автоматически, когда пользователь выйдет из одной из них
Я создал страницу входа, основанную на localStorage.
При загрузке страницы я проверил значение localStorage.
Если я открываю веб-страницу более чем на одной вкладке, а затем я выхожу из любой вкладки, все оставшиеся страницы должны автоматически выйти из системы.
Если перезагрузка/обновление означает, что он выходит из системы.
Пожалуйста, помогите мне запустить script, когда пользователь просмотрит страницу или скажет любой другой способ решить эту проблему.
Ответы
Ответ 1
Вы можете использовать События хранилища для уведомления при изменении значений localStorage.
function storageChange (event) {
if(event.key === 'logged_in') {
alert('Logged in: ' + event.newValue)
}
}
window.addEventListener('storage', storageChange, false)
Если, например, выходит одна из вкладок:
window.localStorage.setItem('logged_in', false)
Затем все остальные вкладки получат StorageEvent
, и появится предупреждение:
Logged in: false
Надеюсь, это ответит на ваш вопрос!
Ответ 2
"localStorage сохраняет любые сохраненные данные на неопределенный срок на пользовательском компьютере и на вкладках браузера" Источник
Это означает, что если вы очистите/удалите данные входа, которые вы установили на одной вкладке, данные также будут изменены на всех других вкладках.
Итак, если пользователь выходит из системы, данные локального хранилища меняются.
Затем на вкладках обнаружите, когда пользователь снова переключит фокус на эту вкладку, используя событие onfocus
:
function onFocus(){
//Reload Page if logged out (Check localStorage)
window.location.reload();
};
if (/*@[email protected]*/false) { // check for Internet Explorer
document.addEventHandler("focusin", onFocus);
} else {
window.addEventHandler("focus", onFocus);
}
Источник
Это означает, что вы не будете постоянно запускать javascript или перезагружать (возможно, большое количество) вкладок одновременно.
Ответ 3
Просто напишите небольшой javascript, который проверяет каждые 100 мс (например.), если сохраненный "сеанс" в localStorage все еще существует. Если нет, обновите страницу. Вы можете использовать setInterval
для этого.
Ответ 4
Посмотрите API видимости страницы для HTML5.
Это может помочь вам