MrNix21
@MrNix21

Как на JS узнать время проведенное на сайте (с листанием страниц)?

Здравствуйте. Мне нужно показать попап пользователю, который провел на сайте 1 минуту. Он может находиться на одной странице, или листать несколько страниц, но счетчик должен отсчитывать время с захода на сайт (время сессии).
Что-то не нашел ничего в гугл. Можно ли это делать без PHP?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
wapster92
@wapster92 Куратор тега JavaScript
if (!sessionStorage.getItem('startTime')) {
  sessionStorage.setItem('startTime', Date.now());
}

const enterTime = sessionStorage.getItem('startTime')

const showPopup = () => {
  let currentTime = Date.now()
  let spentTime = (currentTime - enterTime) / 1000
  if (spentTime >= 60) {
    clearInterval(timer)
    alert(`Вы провели на сайте минут: ${Math.floor(spentTime / 60)}, секунд: ${Math.floor(spentTime % 60)}`)
  }
}

const timer = setInterval(showPopup, 10000)

Но эта версия будет работать только в пределах одной вкладки. И как сказал Рональд Макдональд такие штуки противопоказаны вообще, лично меня даже в новостных дико бесит криво написаные лайзи лоады и прочая туфта, которая начинает двигать контент, не говоря уже об окнах, которые любят понапихать и по таймеру, и по скроллу, и по клику на документ.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Zoominger
@Zoominger
System Engineer
Мне нужно показать попап пользователю, который провел на сайте 1 минуту.

Ненавижу эти ублюдские попапы и эти поганые чаты, которые вылезают и пердят каким-нибудь звуком мне в наушники и ещё отрисовываются несколько секунд, не давая закрыться. Кому не плевать, что там пишется в попапе, если все автоматом эту срань закрывают? Чёрт возьми, 2k20 на дворе, но дурачки всё равно пихают это кал на страницы.

По теме: используйте куки, отмечайте там время, в которое зашёл юзер и проверяйте каждые 10 секунд, не превысило ли время 60 секунд.
Ну и на попапе можете написать: "Прощайте!" своему посетителю.
Ответ написан
Stalker_RED
@Stalker_RED
1. Проверяете localStorage, если пусто - пишете текущее время.
2. если не пусто, но промежуток слишком большой, считаете что началась "новая" сессия, обновляете время в localStorage
3. и сравниваете с текущим, выясняете, не пора ли показать попап.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы