我正在设置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=/";
}
});
答案 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。