Script

本类阅读TOP10

·一个简单的javascript菜单
·网站流量统计代码
·可编辑的 HTML JavaScript 表格控件 DataGrid II
·JavaScript通用库(一)
·在网页中控制wmplayer播放器
·层遇到select框时
·TYPEING TEST ON LINE 在线打字测试 Free Software Javascript (aiiiq)
·javascript表单之间的数据传递!
·让网页自动穿上外套
·搜索gb2312汉字在网上的频率

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
用OO思路处理Cookies

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

用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




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有