js 中cookie的使用

cookie是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie可用,因此cookie可以跨越一个域名下的多个网页,但是不能跨越多个域名来使用。
cookie的使用场景:
1、保存用户登入状态
2、根据用户的行为,可以用来存储用户的一些个性化配置
3、定制页面。可以保存记录用户的选项。
4、创建购物车
每个cookie都是一个名/值对,可以吧下面这样的一个字符串赋值给document.cookie
document.cookie="userId=828";
如果要一次性存储对个名/值对,可以使用分号加空格(; )隔开
document.cookie="userId=828; userName=hulk";
在cookie 的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格。
但是可以通过escape()函数进行编码,这样就可以存储一些特殊的字符,同时这样可以避免中文乱码的问题。当通过escape()编码后,取出值需要使用unescape()进行解码才能得到原来的cookie值
1、添加一个cookie:addCookie(name,value,expiresHours)
             name:cookie名称,  cookie值,expireHours过期时间
function addCookie(name,value,expiresHours){
var cookieString=name+"="+escape(value);
//判断是否设置过期时间
if(expiresHours>0){
var date=new Date();
date.setTime(date.getTime+expiresHours*3600*1000);
cookieString=cookieString+"; expires="+date.toGMTString();
}
document.cookie=cookieString;
}
2、获取指定的名称的cookie值:getCookie(name)
       该函数返回名称为那么的cookie值,如果不存在则返回空
function getCookie(name){
        var strCookie=document.cookie;
        var arrCookie=strCookie.split("; ");
        for(var i=0;i<arrCookie.length;i++){
            var arr=arrCookie[i].split("=");
            if(arr[0]==name)
                    return arr[1];
}
3、删除指定名称的cookie: deleteCookie(name)
      该函数可以删除指定名称的cookie
function deleteCookie(name){
        var date=new Date();
        date.setTime(date.getTime()-10000);
        document.cookie=name+"=v; expires="+date.toGMTString();
}
  //获取cookie中指定的cookie的值
  function get_value_from_cookie(key){
      var strCookie = document.cookie;
    //  alert(strCookie);
      var arrCookie = strCookie.split(';');
      var key_value_arr ;
      for(key_value in arrCookie){
        strkeyValue = arrCookie[key_value];
          key_value_arr = strkeyValue.split('=');
          if( key.trim() == key_value_arr[0].trim()){
            if (key_value_arr[1]) {
              return key_value_arr[1];
            };
          }
      }
      return null;
  }
  //删除指定key的cookie
  function delete_one_cookie_by_key(key){
    var date = new Date();
    date.setTime(date.getTime() - 10000);
    document.cookie = key +"=v; expires="+date.toGMTString();
  }

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注