javascript封装 Cookie 应用接口
本文章记录本人在学习Cookie中看书理解到的一些东西,加深记忆和并且整理记录下来,方便之后的复习。
封装函数
在默认的情况下存取Cookie是一件比较麻烦的事情。由于Cookie是通过字符串来存储信息的,所以容易导致在执行赋值运算的时需要转换读取信息的数据类型。而且Cookie信息的字符串本身就令人讨厌,在经常使用Cookie信息的Web应用中格外的不方便。所以需要自行的封装一个Cookie函数来提供开发效率!
定义一个函数Cookie(),这个函数能够写入指定的Cookie信息,删除指定的Cookie信息,也能够读取指定名称的Cookie值,另外,在该函数中还可以制定Cookie信息的有效期、有效路径、作用域和安全性选项设置。完整的代码:
varCookie=function(name,value,options){
//如果第二个参数存在
if(typeofvalue!='undefined'){
options=options||{};
if(value===null){
//设置失效时间
options.expires=-1;
}
varexpires='';
//如果存在事件参数项,并且类型为number,或者具体的时间,那么分别设置事件
if(options.expires&&(typeofoptions.expires=='number'||options.expires.toUTCString)){
vardate;
if(typeofoptions.expires=='number'){
date=newDate();
date.setTime(date.getTime()+(options.expires*24*60*60*1000));
}else{
date=options.expires;
}
expires=';expires='+date.toUTCString();
}
varpath=options.path?';path='+options.path:'',//设置路径
domain=options.domain?';domain='+options.domain:'',//设置域
secure=options.secure?';secure':'';//设置安全措施,为true则直接设置,否则为空
//把所有字符串信息都存入数组,然后调用join()方法转换为字符串,并写入Cookie信息
document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');
}else{//如果第二个参数不存在
varCookieValue=null;
if(document.cookie&&document.cookie!=''){
varCookie=document.cookie.split(';');
for(vari=0;i<Cookies.length;i++){
varCookie=(Cookie[i]||"").replace(/^\s+|\s+$/g,"");
if(Cookie.substring(0,name.length+1)==(name+'=')){
CookieValue=decodeURIComponent(Cookie.substring(name.length+1));
break;
}
}
}
returnCookieValue;
}
};
如何使用
写入Cookie信息:
//简单写入一条Cookie信息
cookie("user","baidu");
//写入一条Cookie信息,并且设置更多选项
cookie("user","baidu",{
expires:10,//有效期为10天
path:"/",//整个站点有效
domain:"www.baidu.com",//有效域名
secure:true//加密数据传输
});
2.读取Cookie信息:
cookie("user");
3.删除Cookie信息:
cookie("user",null);
再给大家分享一个封装好的代码
//向cookie写入数据
functionwriteCookie(name,value,days){
//定义有效日期(cookie的有效时间)
varexpires="";
//为有效日期赋值
if(days){
vardate=newDate();
//设置有效期(当前时间+时间段)
date.setTime(date.getTime()+(days*24*60*60*1000));//时间段为毫秒数
expires=";expires="+date.toGMTString();
}
//给cookie赋值name,value和expirationdate(有效期)
document.cookie=name+"="+value+expires+";path=/";
}
//读取cookie数据
functionreadCookie(name){
varsearchName=name+"=";
varcookies=document.cookie.split(';');
for(vari=0;i<cookies.length;i++){
varc=cookies[i];
while(c.charAt(0)=='')
c=c.substring(1,c.length);
if(c.indexOf(searchName)==0)
returnc.substring(searchName.length,c.length);
}
returnnull;
}
//清楚所有的cookie
functioneraseCookie(name){
//将时间设置成-1将清除存储在cookie中的数据
writeCookie(name,"",-1);
}
最后,如果文章有什么错误和疑问的地方,请指出。与sf各位共勉!