Cookie封装(设置,获取、删除)详解


转载:https://www.cnblogs.com/maderlzp/p/7843365.html

如图下所示:

需求:选中右上角单选框某个颜色值时,导航栏主题色同步改变成选中颜色,当刷新页面时候,选中的颜色仍然选中之前关闭的颜色;

cookie的主要作用:

Cookie主要用在以下三个方面:

  • 会话状态管理(如用户登录状态、购物车、游戏分数和其它需要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为)
/**
 * 2、改变导航栏头部颜色
 */
$('.theme_color_checkbox li').on('click'function () {
  $(this).addClass('icondagou').siblings().removeClass('icondagou');
  var inputIndex = $(this).index();//获取到选中颜色的下标
  $('.header_wrap .nav').attr('class''nav color_label_' + (inputIndex + 1));
  // localStorage.setItem('themeColor', inputIndex);
  setCookie('themeColorCookie'inputIndex7);//设置7天之后过期

})
// var ThemeColorIndex = localStorage.getItem('themeColor');
var ThemeColorIndex = getCookie('themeColorCookie');
if (ThemeColorIndex) {
  let nav = ThemeColorIndex + 1;
  $('.theme_color_checkbox li').eq(ThemeColorIndex).addClass('icondagou').siblings().removeClass('icondagou');
  $('.header_wrap .nav').attr('class''nav color_label_' + (ThemeColorIndex * 1 + 1));
}
/**
 * 
 * @param {*} name //cookie的名称
 * @param {*} value //cookie的值
 * @param {*} day //cookie的过期时间
 */
function setCookie(namevalueday) {
  if (day !== 0) {
    var expires = day * 24 * 60 * 60 * 1000;//转化为秒
    var date = new Date(+new Date() + expires);
    document.cookie = name + '=' + value + ';expires=' + date.toUTCString();
  } else {
    document.cookie = name + "=" + escape(value);
  }
}
/**
 * 
 * @param {*} name //cookie的名称
 */
function getCookie(name) {
  var arr;
  var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
  /**
   * ^:匹配输入字符串的开始位置
   * (^| );//匹配cookie开头或者空格(cookie键值对之间用分号空格隔开)===>cookie键值对的开始
   * name:cookie的名字
   * ([^;]*):匹配cookie中除了分号(;)以外的值
   * (;|$):匹配cookie中分号或者匹配cookie的结尾位置
   * 
   */
  if (arr = document.cookie.match(reg)) {
    return unescape(arr[2]);//unescape :是对escape的解码
  } else {
    return null;
  }
}
/**
 * 
 * @param {*} name //删除cookie的值
 */
var delCookie = function (name) {
  setCookie(name'', -1);
}

/**
 * cookie设置基本语法:
 * cookieName=cookieValue ===> cookieName(cookie名字),cookieValue(cookie值)
 * expires=Sun, 13 Oct 2019 02:09:08 GMT ===> 设置cookie过期日期,若未定义,cookie会在会话结束时候过期,日期格式为new Date().toUTCString()
 * path=/demoDir ===> 设置文件的路径,没有定义默认为当前文档位置的路径
 * domain=127.0.0.1 ===> 设置指定域名,若未定义,默认问当前文档位置的路径或域名的部分
 * max-age=604800000 ===> 设置文档被查看后cookie过期时间,单位为秒
 * secure=true ===> cookie只会被https传输,即加密的https链接传输
 */
// document.cookie = "cookieName=cookieValue;expires=Sun, 13 Oct 2019 02:09:08 GMT;path=/demoDir;domain=127.0.0.1;max-age=604800000;secure=true";
未来的我会感谢现在努力的自己。
原文地址:https://www.cnblogs.com/cat-eol/p/11665172.html