Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   session как узнать, что сессия начата новая? (https://javascript.ru/forum/offtopic/56858-session-kak-uznat-chto-sessiya-nachata-novaya.html)

Gozar 07.07.2015 11:13

session как узнать, что сессия начата новая?
 
Решил сделать javascript сессию:

Firefox 39 при закрытии не удаляет куку установленную без expires в document.cookie;

sessionStorage в ff просто неубиваемый, после перезагрузки, если пользователь не открыл другую вкладку получаем данные предыдущей сессии.

Chrome вообще куки не удаляет сессионные, я так понял у него и механизм этот выпилили на всякий случай.

Вопрос такой: как узнать, что сессия начата новая?

С вечными сессиями всё понятно, просто ставим вечную куку, но не могу понять, как поставить временную, которая бы убивалась при закрытии браузера?

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

Deff 07.07.2015 17:35

Вариант:,
1. На страницах, в хидере, - проставленная сервером переменная RequestTime (Гринвич-время отдачи страницы сервером)
2. Если ячейка в Storage, забитая под признак начала сессии пустая, - ставим дату отдачи страницы, - при закрытии страницы(вкладки) - время текущей страницы очищаем из ячейки. Даты одновременно открытых страниц ставим через запятую и очищаем (при закрытии вкладки) только дату текущей страницы
Плюсы - если при фокусе на вкладку перезаписывать время текущей страницы в конец списка, - всегда знаем последне активную вкладку(для уведомлений и уведомлений на "Ухе" последней вкладки). Возможность запуска синхронных скриптов на юзерах(к примеру с 9:00 в понедельник) или отсчета длинных интервалов. Типично в хидере есть еще и переменная тайм-зоны.


Часовой пояс GMT +3, время: 16:54.