Подтвердить что ты не робот

Выйдите из всех открытых вкладок автоматически, когда пользователь выйдет из одной из них

Я создал страницу входа, основанную на localStorage. При загрузке страницы я проверил значение localStorage. Если я открываю веб-страницу более чем на одной вкладке, а затем я выхожу из любой вкладки, все оставшиеся страницы должны автоматически выйти из системы.

Если перезагрузка/обновление означает, что он выходит из системы.

Пожалуйста, помогите мне запустить script, когда пользователь просмотрит страницу или скажет любой другой способ решить эту проблему.

4b9b3361

Ответ 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 для этого.