session как узнать, что сессия начата новая?
Решил сделать javascript сессию:
Firefox 39 при закрытии не удаляет куку установленную без expires в document.cookie; sessionStorage в ff просто неубиваемый, после перезагрузки, если пользователь не открыл другую вкладку получаем данные предыдущей сессии. Chrome вообще куки не удаляет сессионные, я так понял у него и механизм этот выпилили на всякий случай. Вопрос такой: как узнать, что сессия начата новая? С вечными сессиями всё понятно, просто ставим вечную куку, но не могу понять, как поставить временную, которая бы убивалась при закрытии браузера? В браузерах есть какой-нибудь стандартный механизм или для каждого нужно придумывать свой велосипед с треугольными колесами? |
Вариант:,
1. На страницах, в хидере, - проставленная сервером переменная RequestTime (Гринвич-время отдачи страницы сервером) 2. Если ячейка в Storage, забитая под признак начала сессии пустая, - ставим дату отдачи страницы, - при закрытии страницы(вкладки) - время текущей страницы очищаем из ячейки. Даты одновременно открытых страниц ставим через запятую и очищаем (при закрытии вкладки) только дату текущей страницы Плюсы - если при фокусе на вкладку перезаписывать время текущей страницы в конец списка, - всегда знаем последне активную вкладку(для уведомлений и уведомлений на "Ухе" последней вкладки). Возможность запуска синхронных скриптов на юзерах(к примеру с 9:00 в понедельник) или отсчета длинных интервалов. Типично в хидере есть еще и переменная тайм-зоны. |
Часовой пояс GMT +3, время: 16:54. |