Как определить, запущен ли сеанс браузера или это следующий клик?
Я хотел бы выяснить, является ли сеанс браузера новым (пользователь просто запустил браузер и загрузил мою страницу) или последующим переходом по ссылке.
Как это можно сделать с помощью JavaScript?
4 ответа
Вместо window.referrer
пытаться document.referrer
, Я получил это работать на меня в Chrome
Ты можешь использовать window.referrer
, хотя это не надежный метод, потому что некоторые настройки браузера скрывают его в целях конфиденциальности. Тем не менее, он должен нормально работать с большинством настроек по умолчанию.
Это даст вам undefined
если браузер только что запустился или пользователь зашел туда с новой вкладки, но имейте в виду, что если у пользователя есть домашняя страница, и он оттуда заходит на сайт, он выдаст домашнюю страницу. Также, если пользователь CMD/CTRL + click
ы и откроется в новой вкладке, он бросит undefined
несмотря на то, что они нажали на ссылку, чтобы попасть туда.
С этим сказал,
if(window.referrer){
//stuff to do if clickthrough
}else{
//stuff to do if new session
}
Вы можете установить сессионный cookie, когда сайт загружается на начальной странице. Поэтому, когда сайт загружается и вы проверяете, существует ли этот файл cookie, вы будете знать, начинается ли новый сеанс или нет.
Вы можете проверить наличие sessionStorage.length в вашей функции $(document).ready(). Если длина sessionStorage равна 0, то вы, вероятно, можете установить элемент, например, время, в которое вы можете сохранить время загрузки страницы, используя jQuery.now(). В следующий раз, если страница перезагрузится, вы можете проверить длину, которая не будет равна 0, показывая, что тот же сеанс все еще существует.
$(document).ready(function(){
if(sessionStorage.length!=0){
//do something
}
else{
sessionStorage.setItem("time",jQuery.now());
}
}