基于Cookie的4天倒计时自动跳转功能开发技术求助
我仔细看了你的需求和现有代码,发现几个需要调整的地方,同时帮你完善了访问次数统计的逻辑,确保满足所有需求。先看修正后的完整代码:
$(document).ready(function() { // 获取关键Cookie值 const firstVisitDate = getCookie('firstVisit'); const visitCount = parseInt(getCookie('visitCount')) || 0; // 首次访问初始化Cookie if (!firstVisitDate) { const now = new Date(); // 记录首次访问时间(时间戳),有效期30天 setCookie('firstVisit', now.getTime(), 30); // 初始化访问次数为1 setCookie('visitCount', 1, 30); } else { // 非首次访问,更新访问次数 setCookie('visitCount', visitCount + 1, 30); // 计算时间差(毫秒转天) const now = new Date(); const daysSinceFirstVisit = (now.getTime() - parseInt(firstVisitDate)) / (1000 * 60 * 60 * 24); // 判断是否满足跳转条件:首次访问超过4天,且10天内访问次数不足7次 const visitsInLast10Days = getVisitsInLast10Days(); if (daysSinceFirstVisit > 4 && visitsInLast10Days < 7) { // 跳转至目标页面(记得替换成你的实际URL,加上协议头) window.location.href = 'https://www.facebook.com'; } } }); // 设置Cookie的工具函数 function setCookie(cname, cvalue, exdays) { const d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); const expires = "expires=" + d.toUTCString(); // 可选:添加domain参数确保子域名也能访问Cookie,比如 ";domain=yourdomain.com" document.cookie = `${cname}=${cvalue};${expires};path=/`; } // 获取Cookie的工具函数 function getCookie(cname) { const name = cname + "="; const ca = document.cookie.split(';'); for(let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1); } if (c.indexOf(name) === 0) { return c.substring(name.length, c.length); } } return ""; } // 辅助函数:统计最近10天的访问次数 function getVisitsInLast10Days() { const visitCount = parseInt(getCookie('visitCount')) || 0; const firstVisit = parseInt(getCookie('firstVisit')); const now = new Date(); const tenDaysAgo = now.getTime() - (10 * 24 * 60 * 60 * 1000); // 如果首次访问在10天内,直接返回当前访问次数 if (firstVisit >= tenDaysAgo) { return visitCount; } else { // 如果首次访问超过10天,重置访问次数为1(当前这次访问) setCookie('visitCount', 1, 30); return 1; } }
关键功能说明:
- 首次访问初始化:当用户第一次访问时,记录首次访问的时间戳和初始访问次数,两个Cookie都设置30天有效期,满足你要求的“至少30天”需求。
- 访问次数追踪:每次用户访问促销页,都会自动增加访问次数并更新Cookie。同时通过
getVisitsInLast10Days函数确保只统计最近10天的访问次数,超过10天会重置计数。 - 跳转逻辑:只有当两个条件同时满足时才会跳转:
- 距离首次访问已经超过4天
- 最近10天内的访问次数不足7次
- Cookie优化:工具函数保留了
path=/确保全站Cookie有效,你还可以根据需要添加domain参数适配子域名场景。
注意事项:
- 跳转URL一定要加上
http://或https://,否则浏览器会把它当成相对路径处理,导致跳转错误。 - 如果你的促销页和目标跳转页不在同一个域名下,注意跨域Cookie的限制(不过跳转本身不受影响,只是Cookie无法在目标域名读取)。
内容的提问来源于stack exchange,提问作者Abid Pasha
相关产品推荐
相关产品推荐

