На каждой странице моих сайтов я использую AJAX для опроса сервера и получения списка сообщений. Сервер поддерживает список сообщений и SessionId (я в среде ASP.NET, но я чувствую, что этот вопрос применим к любой технологии на стороне сервера), для которой предназначено сообщение. Если для конкретного SessionId найдено сообщение, оно возвращается скрипту на стороне клиента. Я использую библиотеку JavaScript для создания уведомления (используя noty, JQuery Notification Plugin). Когда он возвращает определенное сообщение, сервер отбрасывает это сообщение.Обнаружение уникальных вкладок браузера
Это хорошо работает, если у пользователя есть только одна вкладка/окно, открытое для определенного сайта. Однако предположим, что у них есть два открытых файла, и они делают что-то, что вызывает создание предупреждающего сообщения. У меня нет контроля над тем, на какую вкладку отправлено уведомление, поэтому пользователь может не увидеть предупреждающее сообщение.
Есть ли способ уникальной идентификации вкладки браузера? Тогда я мог бы передать это как один из параметров в моем вызове AJAX.
window.MYID = Math.random(); ... doServerStuff (MYID, ...); ... if (response.id == MYID) ... вы можете использовать window.name для сохранения идентификатора в обновлении. – dandavis
@ dandavis Будет ли это длиться через несколько запросов? Предположим, я установил window.MYID в Default.aspx, а затем пользователь переходит к MyAccount.aspx. Будет ли window.MYID по-прежнему инициализироваться с тем же значением? – mason
window.MYID не будет, но window.name будет. Вы также можете использовать sessionStorage, если он доступен. – dandavis