js操作cookies类.docx
- 文档编号:8635559
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:9
- 大小:16.93KB
js操作cookies类.docx
《js操作cookies类.docx》由会员分享,可在线阅读,更多相关《js操作cookies类.docx(9页珍藏版)》请在冰豆网上搜索。
js操作cookies类
方法一:
functionCookie(delim){//操作Cookie类
Array.prototype.splice=function(){
varlen=arguments.length,tarray=[],i=arguments[0]+arguments[1];
if(len>1){
while(i this.length=arguments[0]; if(len>2)for(vari=2;i vartlen=tarray.length,i=0; while(i } returnthis; } this._Cookie=[]; this.Load=function(){ if(document.cookie.indexOf(";")! =-1){ var_sp,_name,_tp,_tars,_tarslength; var_item=document.cookie.split(";"); var_itemlength=_item.length; while(_itemlength>0){ _sp=_item[--_itemlength].split("="); _name=_sp[0]; _tp=_sp[1].split(","); _tars=_tp.slice(1,_tp.length); this._Cookie[_name]=[]; this._Cookie[_name]=_tars; this._Cookie[_name]["timeout"]=_tp[0]; } returntrue; } returnfalse; } this.Save=function(){ var_str,_ars,_mars,_marslength,timeout,i,key; for(keyinthis._Cookie){ if(! this._Cookie[key])return; _str=[]; _mars=CookieClass._Cookie[key]; _marslength=_mars.length; for(i=0;i<_marslength;i++)_str[_str.length]=escape(_mars[i]); document.cookie=key+"="+_mars["timeout"]+(_str.length>0? ",": "")+_str+";expires="+newDate(parseInt(_mars["timeout"])).toGMTString(); } } this.GetCookieCount=function(){ var_length=0,key; for(keyinthis._Cookie)_length++; return_length; } this.Create=function(name,days){ this._Cookie[name]=[]; this._Cookie[name]["timeout"]=newDate().getTime()+days*86400000; } this.Modify=function(name,days){ this.Create(name,days); } this.GetTime=function(name){ returnnewDate(parseInt(this._Cookie[name]["timeout"])); } this.Delete=function(name){ this.Create(name,0); } this.AddItem=function(name,value){ this._Cookie[name][this._Cookie[name].length]=value; } this.DelItem=function(name,index){ this._Cookie[name].splice(index,1); } this.GetCount=function(name){ returnthis._Cookie[name].length; } this.GetItem=function(name,index){ returnthis._Cookie[name][index]; } } /* ==================================== Design: Flashsoft ==================================== 浏览器能够通过Cookies保留有关数据。 象Windows的注册表一样,用户不必知道Cookies的具体位置,浏览器能找到这些数据。 第六代的浏览器,不管是IE还是NS都支持document.cookie属性。 通过这个属性来读取或修改Cookies的值。 不过Cookies的存储形式是非结构化的长字符串,需要经过相应的解析后才有意义。 Cookies的表达如下,除了name=value以外,其它均为可选: name=value; expires=date; domain=domainname path=pathname; secure; 例如: User=HockeyDude;expires=Thu,01-Jan-7000: 00: 01GMT;domain=;path=/images;secure; Pass=Gretzky;expires=Thu,01-Jan-7000: 00: 01GMT;domain=;path=/images;secure; 这么长的两个字符串只代表了两个Cookies。 如果还要再加上电子信箱或其他信息就还得加长字符串。 通常都是通过分解这样的字符串来取得各个变量或元素的。 这实在是费时费力的事。 使用面向对象设计(ObjectOrientedDesign,OOD)的思路来编写Cookies处理函数,其特点如下: 便于增删子项。 这是很重要的,有些浏览器限制Cookies的使用数量。 通过修改函数可以容易地修改时效数据。 通常的做法很麻烦,要拷贝Cookies,删除原Cookies,修改并重写Cookies。 Cookies和它的子项存放在数组里。 可以根据需要快速而有效地进行修改。 这样也无须解析那长长的字符串。 Cookies对象的使用 以下是对象的公有方法: 方括号[]内是可选参数 //构造 Cookie([定界符,缺省为句点])-构造函数 //初始化 GetCookieCount()-返回Cookies数量 Create(name,days)-创建Cookies及其时效天数 Modify(name,days)-修改Cookies的时效天数 Delete(name)-删除Cookies及其子项 GetTime(name)-返回指定Cookies的过期时间 GetCount(name)-返回Cookies的子项数量 AddItem(name,value)-增加一个子项 GetItem(name,index)-返回指定索引的子项 DelItem(name,index)-删除指定的子项 //存取 Load()-读取Cookies Save()-存储Cookies 下面是应用实例: */ varCookieClass=newCookie(); if(! CookieClass.Load()){ CookieClass.Create("Pass",1); CookieClass.Create("User",1); CookieClass.AddItem("Pass","Ps1"); CookieClass.AddItem("Pass","Ps2"); CookieClass.AddItem("Pass","Ps3"); CookieClass.AddItem("Pass","Ps4"); CookieClass.AddItem("Pass","Ps5"); CookieClass.AddItem("Pass","Ps6"); CookieClass.DelItem("Pass",1); CookieClass.Save(); } alert("Cookie过期时间: "+CookieClass.GetTime("Pass").toLocaleString()); alert(document.cookie); 方法二: functioneyunCookie(){ this.key="";//初始化key。 this.value="";//初始化key'svalue。 this.expires=0;//初始化cookie的有效时间,单位毫秒。 this.init=function(){//对象初始化 this.key=""; this.value=""; this.expires=0; } this.set=function(key,value,expires){//设置cookie if(this.key=="")this.key=key; if(this.value=="")this.value=value; if(this.expires<=0)this.expires=expires; if(this.key==""||typeof(this.key)! ="string"){ alert("请先设置欲保存的cookie名称! "); this.init(); returnfalse; } if(this.key.match(/[,;]/)){ alert("cookie名称中不能包含“,”、“;”或空格! "); this.init(); returnfalse; } if(this.value.toString().match(/[,;]/)||typeof(this.value)=="undefined"){ alert("cookie值中不能包含“,”、“;”或空格! "); this.init(); returnfalse; } if(this.expires<=0||typeof(this.expires)! ="number"){ alert("请先正确设置cookie的有效时间! "); this.init(); returnfalse; } varcookie=document.cookie; if(cookie.indexOf(this.key+"=")! =-1){ if(! confirm("欲保存的cookie名称已经存在,是否要进行替换? ")){ this.init(); returnfalse; } } vardt=newDate(); dt.setTime(dt.getTime()+this.expires); document.cookie=this.key+"="+this.value+";expires="+dt.toGMTString(); this.init(); returntrue; } this.get=function(key){//取得名为key的cookie的值 if(key==""||key.match(/[,;]/)){ alert("请正确设置欲查找的cookie名称! ") returnfalse; } varcookie=document.cookie; varstart=cookie.indexOf(key+"="); if(start==-1){ alert("欲查找的cookie不存在! ") returnfalse; } varend=cookie.indexOf(";",start); if(end==-1)end=cookie.length; vargetCookie=cookie.substring(start+key.length+1,end); alert("cookie: "+key+"的值为"+getCookie); returngetCookie; } this.showAll=function(){//显示所有cookie alert("共有以下cookie对: \n"+document.cookie.split(";").toString().replace(/,/g,"\n")); } this.del=function(key){//删除名为key的cookie if(key==""||key.match(/[,;]/)){ alert("请正确设置欲删除的cookie名称! ") returnfalse; } vardt=newDate(); dt.setTime(dt.getTime()); document.cookie=key+"=eyunDelete;expires="+dt.toGMTString(); this.init(); returntrue; } this.destroy=function(){//销毁所有cookie vardt=newDate(); dt.setTime(dt.getTime()); while(document.cookie! =""){ document.cookie=document.cookie+";expires="+dt.toGMTString(); this.init(); returntrue; } } } varcookieTest=neweyunCookie() functionsettest(){ cookieTest.key="test" cookieTest.value="ok" cookieTest.expires=31536000000 cookieTest.set() }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- js 操作 cookies