网络编程
位置:首页>> 网络编程>> JavaScript>> Javascript操作cookie的类

Javascript操作cookie的类

作者:xling 来源:xling的BLOG 发布时间:2007-08-23 09:36:00 

标签:Javascript,cookie

看了OReilly.JavaScript.The.Definitive.Guide.5th.Edition.Aug.2006里的cookie的操作类,但是不符合需求。

看了网上广为转载的cookie操作类,但是我相信那些是有问题的(主要集中在:expires 、domain、path和secure上)。

我不保证我写的就是最好的,但是我保证绝对没有如上所述的问题。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<input type="button" name="button" id="button" value="Remove Cookies" onclick="window.cookie.remove( )" />
<script language="javascript" type="text/javascript">
/*-------------------------------------------
Author :xlingFairy
Blog:http://xling.blueidea.com
2007/08/21
Custom Object Cookie.
Note: It not equal to document.cookie
-------------------------------------------*/
function Cookie() {
 var self = this;
 var trim = function(str){
  return str.replace(/(^\s*)|(\s*$)/g, ""); 
 }
 
 /*-------------------
 Private method init()
 When create a instance,all exists cookie will add as public property.
 -------------------*/
 var init = function(){
  var allcookies = document.cookie;
  if (allcookies == "") return;
  var cookies = allcookies.split(’;’);
  for(var i=0; i < cookies.length; i++)  // Break each pair into an array
   cookies[i] = cookies[i].split(’=’);
  for(var i = 0; i < cookies.length; i++) {
   self[trim(cookies[i][0])] = decodeURIComponent(cookies[i][1]);
  }
 }
 
 init();
 
 /*--------------------
 Public method save()
 --------------------*/
 this.save = function(daysToLive, path, domain, secure){
  var dt = (new Date()).getTime() + daysToLive * 24 * 60 * 60 * 1000;
  for(var prop in this) {
   if (typeof this[prop] == ’function’)
    continue;
   
   var cookie = "";
   cookie = prop + ’=’ + encodeURIComponent(this[prop]);
   
   if (daysToLive || daysToLive == 0) cookie += ";expires=" + new Date(dt).toUTCString(); 
   if (path) cookie += ";path=" + path;
   if (domain) cookie += "; domain=" + domain;
   if (secure) cookie += ";secure";
   document.cookie = cookie;
  }
 }
 
 /*--------------------
 Public method remove()
 --------------------*/ 
 this.remove = function(path, domain, secure){
  self.save(0, path, domain, secure); 
  /*-----------------------
  Must save(0) first then delete this object’s property
  If delete first,save(0) will not save anlything.
  -----------------------*/
  for(var prop in this) {
   if (typeof this[prop] != ’function’)
    delete this[prop];
  }
 }
}
var cookie = new Cookie("vistordata");
if (!cookie.uId) {
    cookie.uId = prompt("Please input you uId:","");
 cookie.save(10);
}
document.write("Your userID is:" + cookie.uId);
var copacast_idMap_img = document.createElement("IMG");
copacast_idMap_img.style.display = "none";
document.body.appendChild(copacast_idMap_img);
copacast_idMap_img.src = " http://www.copacast.net/track/setIDmapping.cgi?uid=" + cookie.uId + "&cltId=xxxx";
</script>
</body>
</html>


0
投稿

猜你喜欢

  • 很多时候关心的是优化SELECT 查询,因为它们是最常用的查询,而且确定怎样优化它们并不总是直截了当。相对来说,将数据装入数据库是直截了当的
  • 在ASP编程中,身份认证可以说是常要用到的。但怎么样才能做到认证的安全呢?表单提交页面:sub.htm   &
  • 一、问题描述 SQL Plus WorkSheet是一个窗口图形界面的SQL语句编辑器,对于那些喜欢窗口界面而不喜欢字符界面的用户,该工具相
  • 最近做了wap站中的搜索结果页的改版,记录一下关于锚点链接的心得~关于锚点链接锚点链接一般用于比较长的网页,使用内部链接建立页内目录。单击目
  • 1、卓越亚马逊的首页轮换图片,每刷新一次,都是随机不同的顺序显示,这样的设计解决了对于较多图片轮换而靠后的图片信息很少被看到的问题,这点对于
  • 压缩数据库文件可以提高数据库的性能,但是有些时候在压缩数据库时,系统会提醒用户该数据库不能压缩。如果在Access数据库中删除数据库对象,或
  • 第一次写这类文章,有点儿紧张有点儿新奇有点儿痛苦,来CDC实习2个月啦,每天除了工作就是体验体验再体验,因为之前做了一些有关规范的工作,突然
  • 表单验证做网站程序多多少少都会碰到,其中emai地址的合法性验证也算是一个典型的例子,网页表单的验证我们一般是先在客户端使用javascri
  • 原问题是这样的:如何用SQL语句(不是Oracle),求出下表每一行的5个字段中的最大值,最后生成一个新字段。例如:第一行最大值 -5.0
  • 1、页签的表达。页签表达很清晰,当前页签突出,且层级包涵关系明确;看下图,一目了然的感觉,不用疑惑我在那部分里。不信?拿当当的对比一下,你感
  •  今天在写BLOG的Trackback时,需要用到当前页的URL地址,并且包括?后的所有参数。在网上看到以下的这段ASP代码,它的
  • 指定的代码页特性无效。 codepage属性:是指出网页的代码页 如果制作的网页脚本与WEB服务端的默认代码页不同,则必须指明代码页: 代码
  • 1、善用css缩写可以减少页面文件大小,提高下载速度,同时使代码简洁可读。代码:div{     b
  • 数据库快照是怎样工作的可以使用典型的数据库命令CREATE DATABASE语句来生成一个数据库快照,在声明中有一个源数据库快照的附加说明。
  • 将转储设备加入到SQL Server备份数据库的地方。在SEM中转储设备是可见性的,并且在设备上的信息被存储在主要数据库的sysdevice
  • 用下面代码可实现:<%Dim writeDim fileSysObj, tf, readrea
  • 当我们在网页中使用flash时,有时候外面会发现flash会遮住了我们的网页内容,特别是当页面中有浮动的元素时。那么怎么样才能让div层显示
  • 以XML格式查看查询结果通过使用传统&mdash;xml 选项调用MySQL命令行客户程序,你可以以XML格式(而不是传统的列表形式
  • 作为互联网产品设计师,在和前端开发人员沟通时你是否常常会听到这样的声音: —— “大姐,给点专业精神好不好,这个表格是自适应的,你
  • 工作中,网页设计师经常会遇见这些状况:时间这么短又要出彩、又是要大气要有气氛、风格不明确很难把握、栏目这么多页面又这么长……突然觉得束手无策
手机版 网络编程 asp之家 www.aspxhome.com