You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Cookie的4天倒计时自动跳转功能开发技术求助

实现基于Cookie的页面跳转与访问次数追踪功能

我仔细看了你的需求和现有代码,发现几个需要调整的地方,同时帮你完善了访问次数统计的逻辑,确保满足所有需求。先看修正后的完整代码:

$(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天会重置计数。
  • 跳转逻辑:只有当两个条件同时满足时才会跳转:
    1. 距离首次访问已经超过4天
    2. 最近10天内的访问次数不足7次
  • Cookie优化:工具函数保留了path=/确保全站Cookie有效,你还可以根据需要添加domain参数适配子域名场景。

注意事项:

  • 跳转URL一定要加上http://或https://,否则浏览器会把它当成相对路径处理,导致跳转错误。
  • 如果你的促销页和目标跳转页不在同一个域名下,注意跨域Cookie的限制(不过跳转本身不受影响,只是Cookie无法在目标域名读取)。

内容的提问来源于stack exchange,提问作者Abid Pasha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:15:08