javascript - 如何在 JavaScript session cookie 中存储变量?

标签 javascript jquery session cookies

我想跟踪用户在我的项目网站上的所有页面上花费的秒数,为此我想使用 JavaScript session cookie。
这是因为我将使用无法访问 PHP 的 Github Pages 托管它,还因为我想尝试使用 JS cookie(这是我第一次这样做)。
为了计算我使用以下内容的秒数:

var time_spent = 0;
setInterval(function(){
    ++time_spent;
    $('#counter_container span').html(time_spent);
}, 1000);

上面的代码在计数器所在的地方工作,但正如预期的那样,每次我更改页面时都会重置。
我试过以下列方式使用 js-cookie 库 ( https://github.com/js-cookie/js-cookie ):

Cookies.set('time_spent', time_spent);
var counted_time = Cookies.get('time_spent');
console.log(counted_time);

但是无论我怎么尝试,counted_time 变量总是“未定义”。
我真的很感激我能得到任何指导来解决这个小问题。

最佳答案

我不会为此使用计时器。而是尝试在用户进入页面时设置一个时间戳,然后 onbeforeunload 获取持续时间并将其添加到存储在 cookie 中的值中。像这样:

var load = new Date();

window.onbeforeunload = function() {
    var leave = new Date();
    var duration = leave.getTime() - load.getTime() / 1000;
    var counted_time = parseFloat(Cookies.get('time_spent')) || 0;
    Cookies.set('time_spent', counted_time + duration);
}

Working example

关于javascript - 如何在 JavaScript session cookie 中存储变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40344313/

相关文章:

java - java 的 session 安全性足够吗?

javascript - Angular 过滤

javascript - 将 JavaScript 处理程序应用于某个 HTML 标记的所有出现位置

jquery - 带有鼠标检测的水平jquery滚动也可以在div中滚动overflow-y

javascript - 如何获取包含在 div 中的单选按钮的 id 集合

PHP7.1 使用 memcached 作为保存处理程序, session 启动缓慢

java - 如何将变量从一个jsp传递到另一个jsp而不使它们成为 session 变量?

javascript - 如何将参数传递给 setTimeout 调用中定义的匿名函数?

javascript - IE8 不触发 OnClick 事件,但在 Firefox 中工作正常

javascript - 从输入文本中获取属性值