2016-08-18 97 views
0

我正在设置一个cookie来启动页面加载模式。 目前,模态只发生一次。设置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=/"; 
} 

});

回答

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

嘿,我要给简单的代码来设置删除和添加的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过期您再次显示它

+1

请小心使用['toGMTString()'](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toGMTString)此功能已弃用:'弃用 This功能已从Web标准中删除。尽管一些浏览器可能仍然支持它,但它正在被丢弃。不要在旧项目或新项目中使用它。使用它的页面或Web应用程序可能会随时中断。# – empiric

+0

哦,很高兴知道谢谢@empiric :) –

0

您只需将有效期限更新为现在+ 1个月,而不是'周五,9999年12月31日23:59:59 GMT',但是请在Cookie检查之外进行,以确保现有用户旧的失效日期得到一个更新的cookie。