我需要能够为回访者设置不同的页面样式。 我正在尝试使用localStorage做到这一点,这是我到目前为止所拥有的。
1)。检查是否设置了访问标志,是否将其添加到正文中
if (localStorage.getItem("visit") !== null) {
$('body').addClass('returning');
}
2)。如果该标志不存在,则将其添加到localStorage
if (localStorage.getItem("visit") == null) {
localStorage.setItem("visit", 1);
}
问题是页面第一次加载此代码的原因是该标志不存在,但是在页面刷新后,该标志存在并且我成为回访者
如何仅在用户返回网站后而不是重新加载页面时才能检测到回访者?
答案 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分钟前,则该会话被判断为过期,并且新会话开始。如果上一次网页浏览是在一定时间之前,您可以决定会话何时过期,并判断一次网页浏览是回访的一部分。请记住,有些人可能会在午夜访问该网站,因此,如果在另一天进行一次单独的会话可能不是一个好的策略。