jQuery(document).ready(function(){
if (document.cookie.indexOf('visited=true') === -1) {
var expires = new Date();
expires.setDate(expires.getDate()+30);
document.cookie = "visited=true; path=/; expires="+expires.toUTCString();
jQuery.colorbox({open:true,href:"<?=home_url()?>/popup/?site_type=2",iframe:true, innerWidth:"700px", innerHeight:"410px"});
}
});
当我关闭浏览器时,此cookie会过期,但我希望它能持续30天,直到他们再次看到弹出窗口。
答案 0 :(得分:4)
不要使用expires
,请尝试max-age
(以秒为单位)。这不涉及Date
实例的创建和修改。
if (document.cookie.indexOf('visited=true') === -1) {
document.cookie = "visited=true; path=/; max-age=2592000;";
答案 1 :(得分:1)
使用Cookie对象:
var CookieExpiryTime = {
END_OF_SESSION : 0,
SECOND : 1000,
MINUTE : 1000 * 60,
HOUR : 1000 * 60 * 60,
DAY : 1000 * 60 * 60 * 24,
YEAR : 1000 * 60 * 60 * 24 * 365,
NEVER : 1000 * 60 * 60 * 24 * 365 * 20
}
var Cookie = {
Set: function (n, v, time, path) {
var e = '', d;
if (time) {
d = new Date();
d.setTime(d.getTime() + (time));
e = "; expires=" + d.toGMTString();
}
if (!path) path = "/";
document.cookie = n + "=" + v + e + "; path="+path;
},
Get: function (n) {
var match = n + "=", c = '', ca = document.cookie.split(';'), i;
for (i = 0; i < ca.length; i++) {
c=String(ca[i]).trim()
if (c.indexOf(match) === 0) {
return c.substring(match.length, c.length);
}
}
return null;
},
Unset: function (n) {
this.Set(n, "", -1);
}
};
只需使用以下代码设置您的Cookie:
Cookie.Set("visited", "true", CookieExpiryTime.MONTH);
这很简单!
此外,要为您的日期添加30天,您必须这样做:
expires.setDate(expires.getDate()+30*24*60*60*1000);
因为时间是毫秒而不是几天。
答案 2 :(得分:-1)
可能的替代方法是使用html5 localStorage。它在IE8 +中得到支持,并且与会话没有任何关系,所以你不会有任何问题。如果您采用localStorage方法,可以使用以下方法构建代码。
var 30_DAYS = 1000 * 60 * 60 * 24 * 30;
var msgSent = localStorage.msgSent;
var now = new Date().getTime();
var diff = now - msgSent;
if (!msgSent || msgSent > 30_DAYS) {
sendMsg();
}
function sendMsg() {
// do your popup thing
localStorage.msgSent = new Date.getTime();
}