javascript针对cookie的基本操作实例详解
本文实例讲述了javascript针对cookie的基本操作。分享给大家供大家参考,具体如下:
js被C#、JAVA等开发者视为声名狼藉的附属编程语言是有道理的,比如说,对cookie的操作。js就没有一套类似C#的现成处理方案,而只能由你自己去完成。下面我就将自己学习的用面向对象的思想对cookie进行处理的学习笔记整理一下,以飨读者。
cookie的常见操作分析:
(1)设置cookie包括了添加和修改功能,事实上如果原有cookie名称已经存在,那么添加此cookie就相当于修改了此cookie。在设置cookie的时候可能还会有一些可选项,用于指cookie 的声明周期、访问路径以及访问域和安全性等等。为了让cookie中能够存储中文,该方法中还需要对存储的值进行编码。
(2)取一个cookie的值,该方法接收cookie名称为参数,返回该cookie的值。因为在存储该值的时候已经进行了编码,所以取值时应该能自动解码,然后返回(这里其实可以自己设置返回什么,而不单单是"取一个值"而已)。
(3)删除一个cookie,删除cookie只需将一个cookie的过期事件设置为过去的一个时间即可,它接收一个cookie的名称为参数,从而删除此cookie(我的实现还将cookie名称设置为空,这是考虑到今后可能会有多个cookie要设置的时候,名称发生冲突的情况)。
(4)其他(这里让读者自己去考虑其他的操作,不赘述了。)
好的,你一定又猜到我要说什么了,对头,codeischeap.看代码:
/*对cookie的操作*/ //创建 varCookie=newObject(); //设置(修改)属性和方法 Cookie.setCookie=function(sName,sValue,oExpires,sPath,sDomain,bSecure){ varsCookie=sName+"="+escape(sValue);//名称和值 if(oExpires){ sCookie+=";expires="+oExpires.toGMTString();//过期时间 } if(sPath){ sCookie+=";path="+sPath;//访问路径 } if(sDomain){ sCookie+=";domain="+sDomain;//访问路径 } if(bSecure){ sCookie+=";true";//安全性 } document.cookie=sCookie; } //获取 Cookie.getCookie=function(sName){ varcookieArray=document.cookie.split(";");//得到分割的名值对 vartempCookie=newObject(); for(vari=0;i<cookieArray.length;i++){ vartempArr=cookieArray[i].split("=");//将名称和值分开 if(tempArr[0]==sName){//如果是指定的cookie,返回它的值 returnunescape(tempArr[1]); } } return"There'snosuchacookiename!"; } //删除 Cookie.deleteCookie=function(sName,sPath,sDomain){ varsCookie=sName+"=;expires="+(newDate(0)).toGMTString();//设置名称为空,过期时间为0,也可以设置过期时间为负数(varsCookie=sName+"=;expires=-1";) if(sPath){ sCookie+=";path="+sPath; } if(sDomain){ sCookie+=";domain="+sDomain; } document.cookie=sCookie; } functiontest(){ Cookie.setCookie("test","cookieTest"); alert(Cookie.getCookie("test")); alert(Cookie.getCookie("test2"));//??? Cookie.deleteCookie("test"); alert(Cookie.getCookie("test")); }
补充:javascript操作cookie类
String.prototype.Trim=function() { returnthis.replace(/^\s+/g,"").replace(/\s+$/g,""); } functionJSCookie() { this.GetCookie=function(key) { varcookie=document.cookie; varcookieArray=cookie.split(';'); vargetvalue=""; for(vari=0;i<cookieArray.length;i++) { if(cookieArray[i].Trim().substr(0,key.length)==key) { getvalue=cookieArray[i].Trim().substr(key.length+1); break; } } returngetvalue; }; this.GetChild=function(cookiekey,childkey) { varchild=this.GetCookie(cookiekey); varchilds=child.split('&'); vargetvalue=""; for(vari=0;i<childs.length;i++) { if(childs[i].Trim().substr(0,childkey.length)==childkey) { getvalue=childs[i].Trim().substr(childkey.length+1); break; } } returngetvalue; }; this.SetCookie=function(key,value,expire,domain,path) { varcookie=""; if(key!=null&&value!=null) cookie+=key+"="+value+";"; if(expire!=null) cookie+="expires="+expire.toGMTString()+";"; if(domain!=null) cookie+="domain="+domain+";"; if(path!=null) cookie+="path="+path+";"; document.cookie=cookie; }; this.Expire=function(key) { expire_time=newDate(); expire_time.setFullYear(expire_time.getFullYear()-1); varcookie=""+key+"=e;expires="+expire_time+";" document.cookie=cookie; } }
用法:
一、设置cookie
varcookie=newJSCookie(); //普通设置 cookie.SetCookie("key1","val1"); //过期时间为一年 varexpire_time=newDate(); expire_time.setFullYear(expire_time.getFullYear()+1); cookie.SetCookie("key2","val2",expire_time); //设置域及路径,带过期时间 cookie.SetCookie("key3","val3",expire_time,".cnblogs.com","/"); //设置带子键的cookie,子键分别是k1,k2,k3 cookie.SetCookie("key4","k1=1&k2=2&k3=3");
二、读取cookie
//简单获取 cookie.GetCookie("key1"); cookie.GetCookie("key2"); cookie.GetCookie("key3"); cookie.GetCookie("key4"); //获取key4的子键k1值 cookie.GetChild("key4","k1");
三、删除
cookie.Expire("key1"); cookie.Expire("key2"); cookie.Expire("key3"); cookie.Expire("key4");
希望本文所述对大家JavaScript程序设计有所帮助。