Задать вопрос
@Masla552

Как запретить использовать веб приложение с больше одной вкладки в браузере?

Добрый день. Нужна такая функция. Я хочу чтобы пользователь имел доступ к моему сайту (или определенной части его функционала), только в случае если сайт открыт с одной вкладки. Если же пользователь имеет уже открытый сайт на одной вкладке, и открывает вторую, надо чтобы на первой ограниченная часть функционала ставала недоступной. Как это сделать? В частности, интересует как этого можно достичь используя JS?
  • Вопрос задан
  • 515 просмотров
Подписаться 2 Средний 3 комментария
Решения вопроса 3
sergiks
@sergiks Куратор тега JavaScript
♬♬
Написать Shared Web Worker.
Подписаться на сообщения от него: он может прислать команду «деактивируйся!» (и «активируйся снова!» – в сложном варианте).

При старте отправлять в него сообщение, регистрирующее вкладку по уникальному ID. Случайное-уникальное, хранится в скрипте во вкладке, запоминается и в воркере.

Воркер по такому сообщению принимает новый ID и деактивирует остальные (отправляет им сообщения).
Принцип «каждый новый побеждает предыдущих».

Если нужно реализовать возврат полномочий к предыдущей вкладке, когда закрыли «активную» – можно придумать протокол. Воркер может по очереди пинговать ID вкладок: «жив?» – нет (таймаут) – следующий «жив?» – жив — «будешь главным».
Ответ написан
Комментировать
@inFureal
Самый простой вариант это через localStorage. При открытии вкладки генерируешь id вкладки. Добавляешь цикл в N времени и обновляешь. Если владыку закрыть, то цикл прервется.
Там же добавляешь такой же цикл, но уже на проверку, нет ли других вкладок, которые обновляют время в localStorage
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
https://developer.mozilla.org/en-US/docs/Web/API/B...

Но я бы не стал пользоваться "приложением" которое за меня решает сколько вкладок мне открывать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы