如何检测网站的回访者

时间:2018-09-06 19:25:16

标签: javascript session cookies local-storage

我需要能够为回访者设置不同的页面样式。 我正在尝试使用localStorage做到这一点,这是我到目前为止所拥有的。

1)。检查是否设置了访问标志,是否将其添加到正文中

if (localStorage.getItem("visit") !== null) {
    $('body').addClass('returning');
   }

2)。如果该标志不存在,则将其添加到localStorage

if (localStorage.getItem("visit") == null) {
    localStorage.setItem("visit", 1);
   }

问题是页面第一次加载此代码的原因是该标志不存在,但是在页面刷新后,该标志存在并且我成为回访者

如何仅在用户返回网站后而不是重新加载页面时才能检测到回访者?

2 个答案:

答案 0 :(得分:1)

为每个用户存储一个timestamp而不是一个boolean

代码段

// When a user visits your web-page
var timestamp = localStorage.getItem("timestamp");

if (timestamp !== null) {
    // taking visiting-gap as 15 minutes
    var epochGap = 900;

    // convert timestamp to seconds
    var jsTimestamp = (new date(timestamp).getTime())/1000;
    var currentTimestamp = (new date(timestamp).getTime())/1000;

    // Mark visitor as returning if coming after the visiting-gap
    if (jsTimestamp > (currentTimestamp + epochHour)) {
        $('body').addClass('returning');
    }
}

// Save timestamp on first visit
if (localStorage.getItem("timestamp") == null) {
    var timestamp = new Date().getTime();

    localStorage.setItem("timestamp", timestamp);
}

答案 1 :(得分:0)

这是Google Analytics(分析)的标准操作!他们这样做的方法是将存储的数据分为几部分(对于GA,它是cookie,但可以使用本地存储)-最重要的是,上次浏览的时间,会话ID和访问者ID。基本思想是,当用户访问该网站时,他们将获得一个用户ID,一个会话ID和一个页面浏览量时间戳,所有这些都在同一Cookie中。然后,如果他们加载了一个页面,并且记录的最后一个页面加载时间戳记是> 30分钟前,则该会话被判断为过期,并且新会话开始。如果上一次网页浏览是在一定时间之前,您可以决定会话何时过期,并判断一次网页浏览是回访的一部分。请记住,有些人可能会在午夜访问该网站,因此,如果在另一天进行一次单独的会话可能不是一个好的策略。