我的 Javascript cookie 在会话时过期,而不是在 30 天后过期
My Javascript cookie expires at session, not in 30 days
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天,直到他们再次看到弹出窗口。
不要使用 expires
,请尝试max-age
(以秒为单位)。这不涉及创建和修改Date
实例。
if (document.cookie.indexOf('visited=true') === -1) {
document.cookie = "visited=true; path=/; max-age=2592000;";
使用 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);
因为时间是以毫秒为单位而不是以天为单位。
一种可能的替代方案是使用 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();
}
相关文章:
- Laravel:在 ajax 请求的会话过期后重定向到登录
- FullCalendar夏令时将事件向后移动1天
- 添加1天后发布的日期
- JQuery Cookie在1分钟后过期
- 如何将日期设置为 72 小时后过期
- 输入标签上 7 天后的日期
- Openfire 会在一天后删除 pub sub 节点(而不是在服务器重新启动或删除缓存后)
- 几天后,昨天停止工作jQuery
- 如何在 JavaScript 计时器过期后重定向
- 我的 Javascript cookie 在会话时过期,而不是在 30 天后过期
- jQuery 日期选择器,退房日期是入住日期后的一天
- 如何从jquery日期选择器禁用周末和特定时间后的前几天的假期
- 有没有办法让Javascript在点击刷新后重定向页面(会话已经过期)
- Salesforce Streaming API:在会话过期后重新连接到Comed
- Javascript new Date(字符串)返回一天后
- 如何在15天后自动删除数据库中的一行数据
- 计时器过期后注销
- node . js插座.io脚本在1-2天后被SIGSEGV杀死
- 几天后删除图像
- 我如何使用我的代码将cookie设置为在x天后过期