我想通过模式向以前访问过网站的访问者提供优惠券代码,但最后一次访问超过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');
}
}
我不太确定如何编写此代码,任何建议或建议的资源?
答案 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.");
}