给梦一个奔跑的方向!
PDF Print E-mail
User Rating: / 4
PoorBest 
Written by xlingfairy
Thursday, 05 March 2009 18:19

原来写过一个 cookie 操作的应用,不过,存在很大问题。

首先,每个 cookie 可以单独设置 expires, path, domain, secure, 但是我以前写的那个,只能对所有 cookie 设置同样的 expires, path, domain, scure。

其次,删除 cookie ,只能整个删除,不能删除哪个指定的 cookie.

现在重新写了一个:

JObj.JCookie = {};
(function($){

 $.getExpires = function(y,m,d,h,i,s,ms){
  var date = new Date();
  y = isNaN(y) ? date.getFullYear() : y;
  m = isNaN(m) ? date.getMonth() : m - 1;
  d = isNaN(d) ? date.getDate() : d;
  
  h = isNaN(h) ? date.getHours() : h;
  i = isNaN(i) ? date.getMinutes() : i;
  s = isNaN(s) ? date.getSeconds() : s;
  ms = isNaN(ms) ? date.getMilliseconds() : ms;
  
  return new Date(y,m,d,h,i,s,ms).toUTCString();
 }
 
 $.getExpiresByUTCString = function(UTCString){
  var s = new Date(UTCString).toUTCString();
  if(s == 'NaN' || s == 'Invalid Date')
   return null ; // IE,Opera NaN , FF,Safari Invalid Date;
  else
   return s;
 }


 $.set = function(k, v, expires , path, domain, secure){
  var cookie = k + '=' + encodeURIComponent(v);
  
  if(expires) cookie += ";expires=" + expires;
  if (path) cookie += ";path=" + path;
  if (domain) cookie += ";domain=" + domain;
  if (secure) cookie += ";secure";
  document.cookie = cookie;
 }
 

/*
以前是把所有 cookie 都取出放到一个对象里,在 get 的时候,直接从那个对象里取来,现在想想,那样并不正确。因为假如某个 cookie 的过期时间过了,那个对象并没有更新。
*/
 $.get = function(k){
  var cks = document.cookie.split(';');
  var t;
  for(var i=0;i<cks.length;i++){
   t = cks[i].split('='); 
   if(k == t[0].trim()) return decodeURIComponent(t[1]);
  }
 }
 
 $.remove = function(k){
  $.set(k,'', $.getExpires( new Date().getFullYear() - 1 ));
 }
 
 $.empty = function(){
  var cks = document.cookie.split(';');
  var t;
  for(var i=0;i<cks.length;i++){   
   $.remove(cks[i].split('=')[0].trim());
  }   
 }
})(JObj.JCookie);

应用:
<script>
JObj.use('JCookie');
var jc = JObj.JCookie;
/*alert(jc.get('sex'));
jc.set('name','xling',jc.getExpires(2010,2));
jc.set('sex','male',jc.getExpires(2020));
jc.remove('name');
alert(jc.get('sex'));
*/
//jc.remove('sex');
//jc.set('version',1,jc.getExpires(2009,04,05));
jc.empty();
</script>
Last Updated ( Wednesday, 13 May 2009 16:59 )
 

Add comment


Security code
Refresh

Popular Contents

Recommend

Site Info

Members : 1
Content : 130
Web Links : 7
Content View Hits : 99629

Links