localStorage的增删改查的方法

http://www.cnblogs.com/webzhangnan/archive/2012/12/03/2800567.html

(function($){

    /*

     * $.cookie('name', 'test',{expires: 7});  //设置  

     * 

     * */

    $.cookie = function(name, value, options) {

        if (typeof value != 'undefined') {

                  options = options || {};

                  if (value === null) {

                            value = '';

                            options = $.extend({}, options);

                            options.expires = -1;

                  }

                  var expires = '';

                  if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {

                            var date;

                            if (typeof options.expires == 'number') {

                                      date = new Date();

                                      date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));

                            } else {

                                      date = options.expires;

                            }

                            expires = '; expires=' + date.toUTCString();

                  }

                  var path = options.path ? '; path=' + (options.path) : '';

                  var domain = options.domain ? '; domain=' + (options.domain) : '';

                  var secure = options.secure ? '; secure' : '';

                  document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');

                  return this;

            } else {

                  var cookieValue = null;

                  if (document.cookie && document.cookie != '') {

                            var cookies = document.cookie.split(';');

                            for (var i = 0; i < cookies.length; i++) {

                                  var cookie = cookies[i].trim();

                                  if (cookie.substring(0, name.length + 1) == (name + '=')) {

                                            cookieValue = decodeURIComponent(cookie.substring(name.length + 1));

                                            break;

                                  }

                            }

                  }

                  return cookieValue;

        }

    };

    /*

     * 

     * $.localStorage('test') //get

     * $.localStorage('test',123) //set

     * $.localStorage('test',{value:123}) //set

     * $.localStorage('test',{value:123}, 1) //set

     * $.localStorage('test',null) //remove

     * 

     */

    var isCache=true,

        minutes =  1000*60,

        now = Date.now();

    

        try {

              localStorage.setItem('cache','test');

        } catch (e) {

            isCache= false;

        }

    

    resetCache = function(time){//定时清理

        if(!isCache)

            return ;

        var expires, day= minutes*60*24;

        time = time || 0;

        if((expires=localStorage.getItem('_expires')) && expires>now){

            return false;

        }

        

        var len= localStorage.length,item,key,t;

        for(var i=0; i<len; i++){

            key= localStorage.key(i);

            item=localStorage.getItem(key);

 

            

            if(item && item.indexOf('_expires')!=-1){

                t=item.match(/_expires":(\d+)/)[1];

                if(now<t){

                    continue;

                }

            }

            localStorage.removeItem(key);

        }

 

        

        return localStorage.setItem('_expires', day*time);

    }

          

    resetCache(60);    //2个月检测一遍

 

    

 

 

    $.localStorage = function(name, value, time) {    

        if(!isCache)

            return false;

        

        

        if (typeof value != 'undefined') {    //set

            

            if(value===null){

                return localStorage.removeItem(name);

            }

            

            if(!isNaN(+time)){

                value = {value: value, _expires : now+time*minutes};

            }

            

            localStorage.setItem(name,JSON.stringify(value));  

            

            return value.value || value;

            

         }else{        //get

                var localValue = null,st,et;

                localValue = localStorage.getItem(name);

                

                    try {

                        localValue = JSON.parse(localValue);

                } catch (e) {

                    return localValue;

                }

                

                if($.isObject(localValue) && (et=localValue._expires) ){

                    if(now > et){

                        localStorage.removeItem(name);

                        localValue=null;

                    }else{

                        localValue =  localValue['value'];

                    }

                }

                 return localValue;

        }

    };

})(Zepto);

猜你喜欢

转载自liuguofeng.iteye.com/blog/2096683
今日推荐