利用cookie记录状态(今日/N天内不提醒,免登录)

16 篇文章 1 订阅
5 篇文章 0 订阅
这段代码展示了如何在JavaScript中管理Cookie,包括设置具有特定过期时间的Cookie(5天或当天内有效)、读取Cookie值以及删除Cookie。通过设置和检查Cookie,可以在用户会话中存储状态并实现业务逻辑。
摘要由CSDN通过智能技术生成
  1. 状态设置成功后将状态值存入cookie中,设置过期时间(有需要时可重新赋值更新过期时间)
	//5天后过期
 setCookieFiveDays: function (name, value, days = 5) {
    let expiresTime = new Date();
     expiresTime.setTime(expiresTime.getTime() + 1000 * 60 * 60 * 24 * days);
    document.cookie = name + '=' + value + ';expires=' + expiresTime.toGMTString() + ';path=/';
  },
  //当天内有效(过期时间23:59:59)
setCookieOneDay: function (name, value) {
    var curDate = new Date(); //当前时间戳  
    var curTamp = curDate.getTime();    //当前日期
    var curDay = curDate.toLocaleDateString();
    var curWeeHours = 0;
    if (navigator.userAgent.toLowerCase().indexOf("safari") != -1) {
      //当日凌晨的时间戳,减去一毫秒是为了防止后续得到的时间不会达到00:00:00的状态  
      curWeeHours = new Date(curDay).getTime() + (8 * 60 * 60 * 1000) - 1;
    } else {
      curWeeHours = new Date(curDay).getTime() - 1;
    }
    //当日已经过去的时间(毫秒)  
    var passedTamp = curTamp - curWeeHours;
    //当日剩余时间  
    var leftTamp = 24 * 60 * 60 * 1000 - passedTamp;
    var leftTime = new Date();
    leftTime.setTime(leftTamp + curTamp);
    document.cookie = name + "=" + value + ";expires=" + leftTime.toGMTString() + ";path=/";
  },
  1. 再次进入时判断是否有cookie,判断状态,然后进行自己的业务
getCookie: function (name) {
    //name 为想要取到的键值的键名
    let reg = /\s/g;
    let result = document.cookie.replace(reg, '');
    let resultArr = result.split(';');
    for (var i = 0; i < resultArr.length; i++) {
      let nameArr = resultArr[i].split('=');
      if (nameArr[0] == name) {
        return nameArr[1];
      }
    }
    return null;
  },
  1. 根据业务逻辑移除cookie
removeCookie: function (name) {
    //name为想要删除的Cookie的键名
    var oDate = new Date(); //时间对象
    oDate.setDate(new Date().getDate() - 1);
    document.cookie = name + "=123;expires=" + oDate + ";path=/";
  }

完整代码


export const cookie = {
  //5天后过期
  setCookieFiveDays: function (name, value, days = 5) {
    let expiresTime = new Date();
    expiresTime.setTime(expiresTime.getTime() + 1000 * 60 * 60 * 24 * days);
    document.cookie = name + '=' + value + ';expires=' + expiresTime.toGMTString() + ';path=/';
  },
  //当天内有效(过期时间23:59:59)
  setCookieOneDay: function (name, value) {
    var curDate = new Date(); //当前时间戳
    var curTamp = curDate.getTime(); //当前日期
    var curDay = curDate.toLocaleDateString();
    var curWeeHours = 0;
    if (navigator.userAgent.toLowerCase().indexOf('safari') != -1) {
      //当日凌晨的时间戳,减去一毫秒是为了防止后续得到的时间不会达到00:00:00的状态
      curWeeHours = new Date(curDay).getTime() + 8 * 60 * 60 * 1000 - 1;
    } else {
      curWeeHours = new Date(curDay).getTime() - 1;
    }
    //当日已经过去的时间(毫秒)
    var passedTamp = curTamp - curWeeHours;
    //当日剩余时间
    var leftTamp = 24 * 60 * 60 * 1000 - passedTamp;
    var leftTime = new Date();
    leftTime.setTime(leftTamp + curTamp);
    document.cookie = name + '=' + value + ';expires=' + leftTime.toGMTString() + ';path=/';
  },
  getCookie: function (name) {
    //name 为想要取到的键值的键名
    let reg = /\s/g;
    let result = document.cookie.replace(reg, '');
    let resultArr = result.split(';');
    for (var i = 0; i < resultArr.length; i++) {
      let nameArr = resultArr[i].split('=');
      if (nameArr[0] == name) {
        return nameArr[1];
      }
    }
    return null;
  },
  removeCookie: function (name) {
    //name为想要删除的Cookie的键名
    var oDate = new Date(); //时间对象
    oDate.setDate(new Date().getDate() - 1);
    document.cookie = name + '=123;expires=' + oDate + ';path=/';
  }
};

//***************使用****************
//写入cookie
cookie.setCookieFiveDays("aaa","bbbb");
//获取cookie
let cookieData = cookie.getCookie("aaa");
if(cookieData ){
//TODO:业务逻辑
}
//移除cookie(需要时使用)
cookie.removeCookie("aaa");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值