分享
 
 
 

用OO思路处理Cookies

王朝html/css/js·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

用JavaScipt创建OOD的Cookies类富有弹性,可用于各种应用。比如购物卡,登录,浮动窗位置等等。你可以充分发挥你的想象力。文末可下载源程序。

简介

浏览器能够通过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-70 00:00:01 GMT; domain=www.mydomain.com; path=/images; secure;

Pass=Gretzky; expires=Thu,01-Jan-70 00:00:01 GMT; domain=www.mydomain.com; path=/images; secure;

这么长的两个字符串只代表了两个Cookies。如果还要再加上电子信箱或其他信息就还得加长字符串。通常都是通过分解这样的字符串来取得各个变量或元素的。这实在是费时费力的事。

我使用面向对象设计(Object Oriented Design,OOD)的思路来编写Cookies处理函数,其特点如下:

便于增删子项。这是很重要的,有些浏览器限制Cookies的使用数量。

通过修改函数可以容易地修改时效数据。通常的做法很麻烦,要拷贝Cookies,删除原Cookies,修改并重写Cookies。

Cookies和它的子项存放在数组里。可以根据需要快速而有效地进行修改。这样也无须解析那长长的字符串。

Cookies对象的使用

以下是对象的公有方法:

方括号[]内是可选参数

//构造

Cookie([定界符,缺省为句点]) - 构造函数

//初始化

GetCookieCount() - 返回Cookies数量

Fetch(index) - 返回指定索引的Cookies名字

Create(name, days) - 创建Cookies及其时效天数

Modify(name, days) - 修改Cookies的时效天数

Delete(name) - 删除Cookies及其子项

GetCount(name) - 返回Cookies的子项数量

AddItem(name, value) - 增加一个子项

GetItem(name, index) - 返回指定索引的子项

DelItem(name, index) - 删除指定的子项

//存取

Load() - 读取Cookies

Save() - 存储Cookies

下面是应用实例:

<!-- HTML网页内调用Cookies对象 -->

<script language="javascript" src="cookie.js"></script>

<!-- 构造并初始化Cookies -->

<script language="javascript">

//Cookies类实例化

var myCookie = new Cookie();

//如果没有Cookies,就创建一个新的Cookies

if(!myCookie.Load()){

myCookie.Create("User", 10); //创建用户(User)Cookies,有效期10天

myCookie.Create("Pass", 15);

myCookie.AddItem("User", "Gretzky"); //增加一个用户子项

myCookie.AddItem("User", "Lemieux");

myCookie.AddItem("User", "Sakic");

myCookie.AddItem("User", "Pronger");

myCookie.AddItem("Pass", "Hockey");

//存储Cookies

myCookie.Save();

}

else{ //如果存在Cookies,直接加载

//显示Cookies的各个子项

for(i=0; i<myCookie.GetCookieCount(); i++)

{

for(j=0; j<myCookie.GetCount(myCookie.Fetch(i)); j++)

alert(myCookie.Fetch(i)+"="+myCookie.GetItem(myCookie.Fetch(i),j));

}

}

</script>

这种OOD的Cookies类富有弹性,可用于各种应用。比如购物卡,登录,浮动窗位置等等。你可以充分发挥你的想象力。

本例Cookies类的缺点:

不能指定不同的Cookies路径和域名,

不能定义是否给Cookies加密。

缺陷:

删除子项时,不能完全删除干净,比如:

652525254424.HockeyDude.Dillweed

删除子项后是:

652525254424._____

我还没有找到原因。如果你能发现问题所在,请告诉我。

http://www.chinaok.net/down/200205082027290.zip

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有