Ограничивать Веб приложение в единственном окне

У меня есть система управления людей в месте, где я работаю, что позволяет (как почти каждая страница), что смог считать ее открытой в нескольких закладках.

Но есть проблема: какие-то из данных, которых сохраняет звук на основании переменных сеанса, и если например исполнители откроют 5 различных людей в 5 различных закладках, пять человек будут сохранять с той же информацией о сеансе первого человека. На основании этого, мне нужно, чтобы система не позволила открывать приложение в новой закладке или окне, а именно, которое только могло бы заниматься ни в одной закладке.

Со мной не случается, что страница это делает, кто-то сказал мне, что у Netflix есть эта функциональность, но я не знаю, как делать это. Кто-то это сделал и может ориентировать меня? Как он мог бы избегать того, чтобы открылись многообразные окна, и ограничивать Веб приложение к единственному окну?

4
задан 17.04.2017, 06:44
0 ответов

Если то, что ты хочешь, состоит в том, чтобы обнаруживать, если новая закладка / окно открылась, что ты можешь показывать сообщение ошибки, если это новая закладка / окно. Для этого ты можешь использовать биографию языка сценариев JavaScript и подтверждать, что нет никакого элемента раньше.

Что-то могло бы делаться так:

// si el historial tiene menos de dos páginas, es una nueva pestaña/ventana
if (history.length < 2) { 
    // Estás es una nueva pestaña/ventana: realiza las acciones necesarias
}

Тогда, если ты это поместишь в начале твоей страницы, ты будешь знать, новая закладка / окно ли это и сможешь действовать последовательно:

  • Покажи сообщение ошибки
  • Спрячь данные, которые они собирались появляться
  • Закрой окно

Или действия, которые ты хочешь сделать. Но помни, что это язык сценариев JavaScript, пользователь со знаниями будет способен нарушать эта проверка (хотя действительно, если он это делает, оно будет функционировать плохо, следовательно он не имеет много чувства).


Другой выбор состоял бы в том, чтобы позволять, что пользователи открыли более одной закладки. Если уже они это делают, и это, как они используют приложение, может быть, будьте более легким для них позволять многообразные окна вместо того, чтобы сокращать число до одной.

Я представляю себе то, что ты имеешь в виду переменные сеанса в стороне сервера, которые будут иметься во всех различных окнах, которые будет считать открытыми пользователь, и поэтому у тебя есть проблема: хотя многообразные заливы закладки / окна, все будут иметь данные.

Мне приходят в голову по крайней мере два способа позволять, что у пользователя могло быть более двух закладок / окон, открытых с информацией о различном сеансе в каждой (я не знаю, как это делает Netflix и у меня нет Netflix, чтобы видеть, что делает):

  1. Идентифицировать однозначным способом каждую закладку / окно и присоединять информацию о сеансе к этому ventan/pestaña.

    Когда usuairo будет инициализировать сеанс, ты распределил бы ему идентификацию в окно и потом, каждый раз, когда была загружена страница, подтвердил бы, новая закладка / окно ли это с языком сценариев JavaScript (ты можешь делать это смотря размер биографии). На сервере ты сохранял бы информацию о сеансе, ассоциируемую с этими IDs, который ты переместил бы в сервер с просьбами для того, чтобы контент был настроен в эту конкретную закладку / окно.

  2. Вместо того, чтобы использовать переменные сеанса на сервере, используй sessionStorage в языке сценариев JavaScript. Это переменные сеанса в стороне клиента и согласно официальной документации (мой перевод):

    Если у пользователя будут открытые многообразные окна сайта, у каждой будет ее собственная копия объекта хранения сеанса

    Тогда у каждой закладки / окна была бы персонализированная информация (но ты был бы должен перемещать ее в сервер для того, чтобы он знал, что он должен показывать.

5
ответ дан 03.12.2019, 17:32
  • 1
    Спасибо за твой ответ Á lvaro. Первое делает мне чувство, veré что такой я идет. sessionStorage не conocí в (я - немного новичок aú n) trataré использования этого и я комментирую тебе. –  23.01.2017, 17:03
  • 2
    @SamVá squez actualicé ответ, потому что я понял, что которое querí эксперт - противоположность: не позволять má s окна. Я оставляю тебе предыдущую часть, если он подает тебя –  23.01.2017, 17:06
  • 3
    Спасибо Альваро, это ú ltimo он подал меня, так как меня решает проблема, который пользователь открыл многообразные операции в то же время. Сейчас он договаривается о том, чтобы не позволить, что он инициализировался sesió n во втором окне, quizá s здесь стоило создавать куки-файл, который сохранял бы состояние login и спрашивал ее перед тем, как инициализироваться sesió n –  23.01.2017, 17:37

Не давая большого количества данных о, как ты считаешь это смонтированным, он немного трудный, но делая поиски по Интернету я нашел это, что то же самое подает тебе:

https://stackoverflow.com / questions / 23690666/check-if-my-website-is-open-in-another-tab

или этот:

https://stackoverflow.com / questions / 25661543/how-to-know-if-browser-tab-is-already-open-using-javascript

Первая более выработана, но я думаю, что со второй он может подавать тебя.

0
ответ дан 03.12.2019, 17:32
  • 1
    Agradecerí в в людей, которые помечают ответы как мало ú tiles, что, по крайней мере, беспокоился о том, чтобы высказывать мнение потому что. –  23.01.2017, 16:45
  • 2
    Не был я тот-1, но могу говорить тебе, что я чувствую себя ощупанным,-1 голосует за этот ответ, потому что ответы, которые só соедини это они плохие: если ссылка ломается, ответ прекращает иметь смысл. Deberí схвати копировать основные идеи о ссылках в ответе в sí –  23.01.2017, 16:48
  • 3
    Хороший я pregunté и у меня есть (-2) ¿ será что моего вопроса мало ú til? Я не понимаю иногда пользователей –  23.01.2017, 16:49
  • 4
    Альваро, верный состоит в том, что ответ со ссылкой - " pobre" и я это понимаю, но что меньше, что помещать комментарий. Я тебе благодарен за комментарий, tendré в счете. –  23.01.2017, 16:55

Теги

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