JavaScript Cookie操作 笔记

 

cookie的属性

 

expires 生存期

 

默认:会话期间存在(用户关闭浏览器后,cookie值被销毁) 

其他:日期格式规范为GMT(或UCT)"Weekday, DD-Mon-YYYY HH:MM:SS GMT" 解决方法是使用Date对象。

 

path 可访问的路径

 

默认:创建该cookie值的网页路径(cookie只能被同在当前目录中的其他页面,或者当前目录的子目录中的页面访问)

其他:可以将path设置为“/”以使整个服务器域都可访问这个cookie成员

 

domain 可访问域

 

默认:当前域

其他:不同子域间将不能相互访问

 

secure 安全性(指定了在网络上传输cookie值的方式)

 

默认:false

其他:false - 普通的、不安全的http连接;true - https或其他安全协议

 

日期格式获取实例

 

var  nextyear  =   new  Date();
nextyear.setFullYear(nextyear.getFullYear() 
+   1 );
expiretime 
=  nextyear.toGMTString();

 

一个简单的封装实现

 

//  有关cookie的操作
function  Cookie() {};

//  设置cookie值
//
 参数:cookie名,值,生存天数,生存小时数
Cookie.setCookie  =   function (name, value, days, hours) {
    
//  如果没有传入生存期,则默认为0天2小时
    days  =  days  ||   0 ;
    hours 
=  hours  ||   2 ;
    
var  expTime  =   new  Date();
    expTime.setDate(expTime.getDate() 
+  days);
    expTime.setHours(expTime.getHours() 
+  hours);
    document.cookie 
=  escape(name)  +   " = "   +  escape(value)  +  
        
" ; "   +   " expires= "   +  expTime.toGMTString();
};

//  获取某个cookie值
//
 返回:cookie值或undefined
Cookie.getCookie  =   function (name) {
    
var  rs  =  document.cookie.match(
        
new  RegExp( " (?:^| ) "   +  escape(name)  +   " =([^;]*)(?:;|$) " " i " )
    );
    
return  rs  ?  unescape(r[ 1 ]) : undefined;
};

//  删除某个cookie值
Cookie.deleteCookie  =   function (name) {
    document.cookie 
=  escape(name)  +   " =;expires= "   +   new  Date().toGMTString();
};

//  清除全部cookie
Cookie.clearCookie  =   function () {
    
//  获取过期时间字符串
     var  expStr  =   new  Date().toGMTString();
    
//  获取当前可访问cookie中的所有name值
     var  rs  =  document.cookie.match(
        
new  RegExp( " ([^ ;][^;]*)(?=(=[^;]*)(;|$)) " " gi " )
    );
    
//  删除所有cookie
     for  ( var  i  in  rs)
        document.cookie 
=  rs[i]  +   " =;expires= "   +  expStr;
};

Cookie.setSubCookie 
=   function (name, subName, value) {
};

Cookie.getSubCookie 
=   function (name, subName) {
};

Cookie.setFullCookie 
=   function (name, value, expTime, path, domain, secure) {
};

 

其他笔记

 

cookie是一个单例对象。

 

cookie值不能含有分号、逗号或空白符,当有这些特殊字符出现时,可以用JavaScript提供的escape函数先对它进行编码(unescape解码)。

 

浏览器保存的cookie总数不能超过300个(注意cookie是单例),为每个Web服务器保存的cookie数不能超过20个(突破20:面包屑技术,通常使用冒号作为子cookie分割符),每个cookie保存的数据不能超过4KB(解决方法:另一种稍微强的脚本化数据存储机制-userData)

你可能感兴趣的:(JavaScript)