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

如何用JS实现每小时检查创建cookie,存在则每分钟跳转指定页面

实现方案

原代码存在的问题

  • 未校验cookie是否存在就直接赋值,每次执行都会覆盖原有cookie
  • 未给cookie设置过期时间,默认是会话有效期,关闭浏览器就会自动清除,无法支撑每小时校验的需求
  • redirect函数内部直接同步递归调用自身,会触发调用栈溢出,无法正常执行定时逻辑
  • 两个定时逻辑(每小时检查cookie、每分钟跳转)没有拆分,执行时序混乱

修正后代码

// 封装获取指定cookie的工具函数
function getCookie(name) {
  const value = `; ${document.cookie}`;
  const parts = value.split(`; ${name}=`);
  if (parts.length === 2) return parts.pop().split(';').shift();
}

// 校验并创建cookie的逻辑
function checkAndCreateCookie() {
  const targetCookie = getCookie('createCookie');
  if (!targetCookie) {
    // cookie不存在,创建时设置1小时过期
    const expireTime = new Date();
    expireTime.setTime(expireTime.getTime() + 60 * 60 * 1000);
    document.cookie = `createCookie=ok; expires=${expireTime.toUTCString()}; path=/`;
  }
}

// 跳转逻辑
function startRedirectTask() {
  setInterval(() => {
    const hasCookie = getCookie('createCookie');
    if (hasCookie) {
      // 存在cookie则跳转,此处替换为你自己的目标页面地址即可
      window.location.href = '你的目标页面地址';
    }
  }, 60 * 1000); // 每分钟执行一次
}

// 初始化执行
checkAndCreateCookie();
startRedirectTask();
// 每小时执行一次cookie校验,和过期时间对齐
setInterval(checkAndCreateCookie, 60 * 60 * 1000);

逻辑说明

  • 先封装独立的cookie读取工具,避免直接读取整个cookie字符串做判断的误差
  • 创建cookie时明确设置1小时过期,和校验周期对齐
  • 用setInterval替代递归调用实现定时执行,避免栈溢出问题
  • 拆分两个独立的定时任务,分别处理每小时cookie校验、每分钟跳转的逻辑,互不干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:24:05