jQuery cookie 没有过期

jQuery cookie is not expring

我正在使用这个 jQuery cookie plugin 创建和显示 cookie。

var date = new Date();
var minutes = 2;
date.setTime(date.getTime() + (minutes * 60 * 1000));        

$.cookie('the_cookie', 'the_value', { expires: date });

alert($.cookie('the_cookie'));

我设置了两分钟(为了测试,一般我会用一小时。下面会解释。)但是如果我在两分钟后再次访问该页面,它仍然显示cookie警报。

我想做什么

我想在一小时内向我的网站显示一条消息。这意味着,当访问者第一次打开我的网站时,访问者可以看到消息。当访问者点击其他页面时,消息将不会显示。一小时后,该消息将再次显示。

如何设置分钟、小时和天?

这里是my codes fiddle.

那是因为您在 create/recreate cookie 后显示警报。 :)

如果您将 alert($.cookie('the_cookie')); 移动到代码段的开头,您的 cookie 将在 2 分钟后消失。

只需使用 Chrome 的“资源”>“Cookie”选项卡进行验证。 :)

这是一个更新的测试工具,它也会显示 cookie 过期: http://jsfiddle.net/bvaughn/860rr2Ly/

if ($.cookie('temporaryCookie')) {
    alert('Cookie still set');
} else if ($.cookie('longerCookie')) {
    alert('Cookie expired at ' + $.cookie('longerCookie'));
} else {
    alert('Cookie never set');
}

var expiresAt = new Date();
expiresAt.setTime(expiresAt.getTime() + 5000); // 5 secs

$.cookie('longerCookie', new Date());
$.cookie('temporaryCookie', true, { expires: expiresAt });

你可以试试

var thecookie = $.cookie('shown');
if (!thecookie) {
    var date = new Date();
    var delay = 20 * 1000;
    date.setTime(date.getTime() + delay);

    $.cookie('shown', 'true', {
        expires: date
    });
    $('body').html('show the message')
}

演示:Fiddle

如果您不担心 IE8 和更早版本,您可以直接使用 max-age 和直接 javascript 作为更简单的解决方案:

if (document.cookie.indexOf('the_cookie') == -1) {
//show message
document.cookie = 'the_cookie;path=/;max-age=120;';
}

这会显示消息并设置 2 分钟的 cookie(如果之前未设置 cookie 或已过期)。