对于在午夜到期的cookie的代码Javascript

时间:2013-12-19 13:47:37

标签: javascript jquery cookies

我有一个带有cookie的弹出窗口,该cookie在一天(24小时)到期,我希望这个cookie每天午夜到期(所以弹出窗口显示你每天第一次进入网络) 。我不是程序员,所以,请问有人可以告诉我在代码中需要更改的内容吗?我已经阅读了一些问题的解决方案,但我不知道如何实现它。

//CONTROLLING EVENTS IN jQuery
$(document).ready(function(){
if ($.cookie("anewsletter") != 1) { 
//centering with css
centerPopup();
//load popup
loadPopup(); 
}     
//CLOSING POPUP
//Click the x event!
$("#popupContactClose").click(function(){
disablePopup();
$.cookie("anewsletter", "1", { expires: 1 });
});

//Click the bacground!
$("#backgroundPopup").click(function(){
disablePopup();
$.cookie("anewsletter", "1", { expires: 1 });
});


//Press Escape event!
$(document).keypress(function(e){
if(e.keyCode==27 && popupStatus==1){
    disablePopup();
    $.cookie("anewsletter", "1", { expires: 1 });
}
});

});

非常感谢!

2 个答案:

答案 0 :(得分:7)

$.cookie可以将日期设为expires值,因此您可以使用以下

var midnight = new Date();
midnight.setHours(23,59,59,0);

$.cookie('anewsletter', '1', { expires: midnight });

答案 1 :(得分:0)

好的 - 这将在访问者第一次到来时创建一个cookie - 该cookie将在23:59:59(midnite之前的第二个)到期,所以如果他们从午夜或之后访问,那么它将重做cookie。您可以在if visited == 0部分(它设置cookie)中添加条件代码 - 只有在cookie不存在(或已过期)时才会运行。

var visited = 0;
function cookieTest() {
    if (visited == 0) {
        var exdate=new Date();
        exdate.setHours(23);
        exdate.setMinutes(59);
        exdate.setSeconds(59);
        document.cookie='visited=1; expires='+exdate+'; path=/';
    }
    else {
        alert("you've been here before!");
    }
}
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) visited = ( c.substring(nameEQ.length,c.length));
    }
    return null;
}
readCookie('visited');
cookieTest();

jsFiddle