Заказчик хочет, чтобы при каждом первом заходе на сайт открывалось модальное окно. Изначально реализовала через сессии, дабы не дублировать окно на каждой странице. Но, получается, пока не удалится сессия, окно больше не появляется. А он хочет, чтобы после ухода с сайта, как только открываешь заново (даже через несколько секунд), снова появлялось это окно...
Не могу сообразить, как рационально это реализовать... буду благодарна за помощь.
а что вы считаете "уходом" с сайта? как только пользователь попал на страницу, чисто технически его нахождение там ничем не отличается от ухода, если не происходит никаких дополнительных запросов. Но вы же не будете каждые тридцать секунд ради этого дергать сервер мол "юзер еще тут"?
Обычно в сессию кладётся информация о последнем визите. Если прошло больше 15 минут(например), считается, что пользователь вернулся на сайт, и тогда должно выводиться модальное окно.
Иначе нужны сокеты чтобы следить за тем, есть ли юзер еще на вашем сайте или нет.
И еще -- убедите заказчика не ставить всплывашку после закрытия вкладки, это же жесть... дилетантское желание всучить пользователю свою хрень, часто с таким борюсь у своих заказчиков.
Татьяна Комарова, при загрузке страницы смотреть в куки браузера. Если там есть кука (например) alreadyVisit: true --- тогда ничего не делать, если нет - показывать модалку и ставить эту куку без указания срока действия. Тогда она удалится при закрытии браузера.
А вам надо ещё и при закрытии страницы. Вот тут писали, как отловить это событие (см. комментарии к ответу) . Ну, и чистить куки.
А если у меня открыта одна вкладка с сайтом, а я открываю его ещё раз в новой вкладке. Получается, ухода с сайта не было, значит, заход не первый. Но ведь с Referer отработает, как будто это новый заход.
Все очень просто! Просто каждые 5 секунд допустим записывай в localstorage текущее дату/время. При открытии сайта в новой вкладке проверяй и если прошло больше 5 секунд значит сайт был закрыт и нужно показать попап. На сервере это не особо имеет смысла делать, но если все же не хочешь грузить лишние 100кб... Просто можешь подгружать эту модалку, какие проблемы
Даже Яндекс метрика считает уход с сайта - 30 минут бездействия. Так что самый надежный способ это сессии.
Можно сделать SPA сайт и держать сессию по WebSocket. Хотя тогда по факту F5 будет новым заходом и можно повесить модалку на onload.
Псевдо SPA можно сделать через PJAX. Но мой вам совет - не занимайтесь порно ...
Над этой задачей бьются куча крупных интернет-магазинов. Скажу, что 100% способа нет даже у Гугла. Есть 95%-ные способы. В т.ч. с использованием кукисов, локального хранилища, сохранения микрофайла-маркера в кеш броузера при загрузке страницы и... да много.
Но ничего из этого не работает при заходе через Приватный режим. Броузер не сохраняет в себе ничего.