web前端cookie的使用方法

16 篇文章 0 订阅

补充参考网站,大家先看看祥细说明:

https://segmentfault.com/a/1190000004743454


cookie使用注意:

如果你设置cookie无效,那你肯定是设置了domain path :   如:document.cookie = "test2=myCookie2; domain=.google.com.hk; path=/webhp";


我自己封装的document.cookie(不是window.cookie)存取删除使用方法:

//document.cookie = "myname=tangcc;max-age=60";//IE 9 ,chrome ,firefox 都兼容,放心用吧!
var log = console.log;//后面直接使用log("hello world!writer:tangcc  date:20171226"),不用写console了,解放了,yeah!
//这是我进行的简单封装,你也可以自己改
var tangcc = {
    transformCookieString : function(key,value,maxAge){// 如:document.cookie = "myname=myvalue;max-age=60";key=myname,value=myvalue,maxAge = 60;
      var cookieString = key+"="+encodeURIComponent(value);
      //var hours8 = 8 * 3600;//这样写是错的浏览器上的cookie失效时间是按世界标准时间(天文台时间)算的,所以这里不能加8小时(中美时差)。
      //判断是否设置过期时间
      if(maxAge){//新版用max-age=1;(秒)来设置 or document.cookie = "test3=myCookie3; domain=.google.com.hk; expires=Sat, 04 Nov 2017 16:00:00 GMT; secure"
        cookieString = cookieString+";max-age=" + parseInt(maxAge);
      }else{
        cookieString = cookieString;
      }
      return cookieString;
    },
    getCookie : function(cookieObj,key){
        var strCookie = cookieObj;
        if(/;/g.test(strCookie)){//至少有两对值
              var arrCookie=strCookie.split(";");
              for(var i=0;i<arrCookie.length;i++){
                  if(/=/g.test(arrCookie[i])){
                        var arr=arrCookie[i].split("=");
                        if(arr[0]==key){
                            return decodeURIComponent(arr[1]);
                        }else{
                            return "";
                        }
                  }else{
                        if(arr == key){
                          return decodeURIComponent(strCookie);
                        }
                  }
              }
        }else{
              if(/=/.test(strCookie)){//只有一对值
                    var arr = strCookie.split("=");
                    if(arr[0] == key){
                      return decodeURIComponent(arr[1]);
                    }else{//传入的key 不正确
                      return "";
                    }
              }else{//只有一个secure属性
                if(arr == key){
                  return decodeURIComponent(strCookie);
                }
              }
        }
    }
    ,deleteCookie :function(name){//这方法是错的,我还没有时间整
      var date=new Date();
      var hours8 = 8 * 3600;// expires(以s为单位) 时间一到就会自动删除
      date.setTime(date.getTime() + hours8  - 100000);
      document.cookie= name + "='';expires="+date.toUTCString();
    }
}


//案例:老总让我写个广告页面,每天第一次登录时才能弹出,其它时候不能弹出,直到2018年(过年啦!)。我果断使用document.cookie;
//计算结束时间
var judgementFullyear = new Date().getFullYear();//这个new Date();得到的是北京时间如:Tue Dec 26 2017 15:19:24 GMT+0800 (中国标准时间),但注意月份要+1
if(judgementFullyear < 2018){//2018年以内都要弹出来
    var date = new Date().getHours();
    var month = new Date().getMonth()+1;//世界时间是0-11,所以我们要加1
    var date = new Date().getDate();
    var hours = new Date().getHours();
    var minutes=new Date().getMinutes();
    var seconds=new Date().getSeconds();
    var Time_theEndToday = new Date(judgementFullyear+"/"+(month)+"/"+date+" "+"23:59:59");//
    var expiresSeconds = parseInt((Time_theEndToday.getTime() - new Date().getTime())/1000);//一天的有效时间,单位是秒,恰恰就是项目中用到的:max-age = expiresSeconds;

    //如果你只想看看怎么用cookie,那你不要管上面的代码,你只要运行下面的代码看看就完事了

    if(typeof document.cookie != "undefined"){
      //var aa = document.cookie;//帅哥,这样写是错的,一定是直接给document.cookie赋值,如:document.cookie="myname=myvalue;max-age=60";
      //aa = og.transformCookieString("myname","2",3); //错的,你不用试了
      //来来来,下面是一个测试例子
      document.cookie = tangcc.transformCookieString("myname","2",3);//单位是秒 3秒后过期
      setTimeout(function(){
        log(tangcc.getCookie(document.cookie,"myname"));
        if(tangcc.getCookie(document.cookie,"myname")){
          //do sth  
        }else{
          //

        }
      },2000)//你把2000改为3000,对不起帅哥,得不到myname的值了哦,因为上面设置了3秒失效,哈哈哈
    }else{//如果不支持cookie
      log("对不起,开启cookie失败。");
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值