设置cookie到期时间

时间:2016-08-18 18:40:49

标签: javascript jquery cookies bootstrap-modal

我正在设置cookie以在页面加载时启动模式。 目前,模态只发生一次。

我需要每个月重置一次,这样每个访问者每月都会突然出现一次。

是否可以修改我的代码以实现此目的,还是我需要以另一种方式执行此操作?任何帮助表示赞赏。

$(document).ready(function () {
//if cookie hasn't been set...
if (document.cookie.indexOf("ModalShown=true")<0) {
    $("#newsletterModal").modal("show");
    //Modal has been shown, now set a cookie so it never comes back
    $("#newsletterModalClose").click(function () {
        $("#newsletterModal").modal("hide");
    });
    document.cookie = "ModalShown=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
}

});

3 个答案:

答案 0 :(得分:2)

不要在您的Cookie中设置静态到期日期,而是动态的:

var now = new Date(); //get the current date
now.setMonth(now.getMonth() + 1); //add one month to it
document.cookie = "ModalShown=true; expires=" + now.toUTCString() + "; path=/";

答案 1 :(得分:1)

嘿,我将提供简单的代码来设置删除并添加可能对您有用的cookie

function setCookie(name, value, expire) {
    document.cookie = name + "=" + escape(value) + ((expire === null) ? "" : ("; expires=" + expire.toGMTString()));
}

function checkCookie(name) {
    if (document.cookie !== "") {
        var toCookie = document.cookie.split("; ");
        for (var i = 0; i < toCookie.length; i++) {
            var CookieName = toCookie[i].split("=")[0];
            var CookieValue = toCookie[i].split("=")[1];
            if (CookieName === name) return unescape(CookieValue);
        }

    }
}

function removeCookie() {
    var CookieAlert;
    CookieAlert = document.getElementById('cookie');
    var expire = new Date();
    expire.setMonth(expire.getMonth() + 1);
    setCookie('agreeCookies', 'yes', expire);
}

window.onload = (function () {
    //IF cookie exists do something 
    if (checkCookie('agreeCookies') !== 'yes') {
        //Do something in your case dont start modal 
    } else {
        //START MODAL
    }
});

所以在html中你可以在模态中的关闭按钮上使用onclick =“removeCookie()”,基本上你显示模态和关闭模态你设置cookie,然后在cookie过期的月份后你再次显示它

答案 2 :(得分:0)

您需要做的就是将过期日期更新为现在+ 1个月,而不是'星期五,格林威治标准时间9月31日23:59:59',但在检查Cookie之外执行此操作以确保现有用户旧的到期日期获得更新的cookie。