jQuery cookie is not expring



我正在使用这个jQuery cookie插件来创建&显示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警报。

我想做什么

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

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

这是我的密码小提琴。

这是因为您在创建/重新创建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;';
}

这将显示消息,并在cookie之前未设置或已过期的情况下设置2分钟的cookie。

最新更新