使用jQuery cookie在上次访问后显示模态x天

时间:2016-12-01 20:42:27

标签: jquery cookies modal-dialog

我想通过模式向以前访问过网站的访问者提供优惠券代码,但最后一次访问超过180天。

如何执行此操作,我不确定是否应创建日期变量以传递给cookie或使用时间戳。我通常是javascript / jquery的新手,所以我不确定如何编码它,但我想它的工作方式是这样的:

检查饼干
- 如果cookie不存在,请使用timestamp / date设置它 - 如果cookie确实存在,请检查时间戳/日期 - 如果时间戳/日期小于或等于180天前,请将时间戳/日期重置为当前时间 - 如果时间戳/日期大于或等于181天前,请显示模态       并使用当前时间戳/日期重置时间戳/日期。

这是我到目前为止所做的:

// Check if the cookie exists.
if (jQuery.cookie('lastVisit') == null) {
    var date = new Date();
    // If the cookie doesn't exist, save the cookie with the value of 1
    jQuery.cookie('lastVisit', 'date');
} else {
    // If the cookie exists, take the value
    var lastVisit_date = jQuery.cookie('lastVisit');
    // If last visit is in the last 180 days
    if (lastVisit_date <= 180) {
        // Reset cookie with new date
        jQuery.cookie('lastVisit', 'date');
    } else {
        // If last visit is past 180 days, show modal and reset cookie with new date
        jQuery('#myModal').reveal();
        jQuery.cookie('lastVisit', 'date');
    }
}

我不太确定如何编写此代码,任何建议或建议的资源?

1 个答案:

答案 0 :(得分:0)

我在CodePen上做了一个示例,您可以在其中创建Cookie。

使用6个月前的日期创建一个...
然后,点击&#34;运行&#34;看到180天的比较工作。

以下是相关代码:

var today = new Date();
if($.cookie("last-visit")){
    console.log("Cookie found!");
    //console.log( $.cookie("last-visit") );

    var cookieValArr = $.cookie("last-visit").split("-");
    var lastVisit = new Date();
    lastVisit.setFullYear( cookieValArr[0],cookieValArr[1]-1,cookieValArr[2] ); // YYYY, MM, DD - Months are zero based.
    //console.log(JSON.stringify(lastVisit));

    // I used a part of this other SO answer: http://stackoverflow.com/a/1458728/2159528
    var timeDiff = Math.abs(today.getTime() - lastVisit.getTime()); // Difference using milliseconds since january 1st, 1970
    var diffDays = Math.floor(timeDiff / (1000 * 60 * 60 * 24));     // Round to days
    console.log(diffDays+ " days since your last visit.");

    // Now is the time to check if more than x days.
    if(diffDays>180){
        console.log("Show modal!")
    }
}else{
    console.log("No Cookie.");
}