我正在使用这个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。