自定义localstorage兼容cookie

7 篇文章 0 订阅
(function(){
almLocalStorage = {
       supportLoaclStorage: function () {
           if (window.localStorage) {
               return true;
           }
           return false;
       },
       setItem: function (name, value, expiredate) {
           if (this.supportLoaclStorage()) {
            if(expiredate==null || expiredate==0){
                    window.localStorage.setItem(name, value);
                } else {
                   var v = null;
                   try{
                       v = JSON.parse(value);
                   }catch(e){
                       v = {"defaultname": value};
                   }
                   var expire = new Date();
                   expire.setTime(expire.getTime() + expiredate * 24 * 3600 * 1000);
                   v.expires=expire.getTime();
                   window.localStorage.setItem(name,JSON.stringify(v));
                   return;
               }
             
           } else {
               if (expiredate < 0) {
                   var expire = new Date();
                   expire.setTime(expire.getTime() - 1000);
                   document.cookie = name + "=" + escape(value) + ";expires=" + expire.toUTCString();
                   return;
               }
               //默认path 根路径
               if (expiredate > 0) {
                   var expire = new Date();
                   expire.setTime(expire.getTime() + expiredate * 24 * 3600 * 1000);
                   document.cookie = name + "=" + escape(value) + ";expires=" + expire.toUTCString() + ";path=/";
               } else {
                   document.cookie = name + "=" + escape(value) + ";path=/";
               }
           }




       },
       getItem: function (name) {
           if (this.supportLoaclStorage()) {
               var v = window.localStorage.getItem(name);
               if(v!=null && v!=""){
                   try{
                       var value = JSON.parse(v);
                      var expires = value.expires;
                       if(expires!=null && expires!= ""){
                          if(new Date().getTime()-expires>0){
                              window.localStorage.removeItem(name);
                              return "";
                          }
                       }


                       if(value.defaultname==null ||value.defaultname==""){
                           return v;
                       }else{
                           return value.defaultname;
                       }
                   }catch(e){


                   }
               }
               return v;
           }
           if (document.cookie.length > 0) {
               var cookieStr = document.cookie;
               var nameidnex = cookieStr.indexOf(name);
               if (nameidnex == -1) {
                   return "";
               }
               var lastIndex = cookieStr.indexOf(";", nameidnex);
               if (lastIndex = -1) {
                   lastIndex = cookieStr.length;
               }
               ;
               return unescape(cookieStr.substring(nameidnex + name.length + 1, lastIndex));
           }
           return "";
       },
       removeItem: function (name) {
           if (this.supportLoaclStorage()) {
               window.localStorage.removeItem(name);
               return;
           }
           var value = this.getItem(name);
           if (value == "") {
               return;
           }
           this.setItem(name, value, -1);
       },
       clear: function () {
           if (this.supportLoaclStorage()) {
               window.localStorage.clear();
               return;
           }
           if (document.cookie.length > 0) {
               var cookieStr = document.cookie;
               var cookieArray = cookieStr.split(";");
               for (var c in cookieArray) {
                   var arr = cookieArray[c].split("=");
                   this.setItem(arr[0], arr[1], -1);
               }
           }
       },
       showStorage: function () {
           if (this.supportLoaclStorage()) {
               var localStorage = window.localStorage;
               var len = localStorage.length;
               var storyArray = new Array();
               for (var i = 0; i < len; i++) {
                   storyArray.push(localStorage.key(i) + "=" + localStorage.getItem(localStorage.key(i)));
               }
               return storyArray.join(";");
           }
           return document.cookie;
       }




   };

})();


使用方法:almLocalStorage.setItem("xxx",xxxx,1) ;  //1表示天数  0不限制过期 -1设置过期


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值