Как определить, запущен ли сеанс браузера или это следующий клик?

Я хотел бы выяснить, является ли сеанс браузера новым (пользователь просто запустил браузер и загрузил мою страницу) или последующим переходом по ссылке.

Как это можно сделать с помощью 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());
  }
}
Другие вопросы по тегам