使用JavaScript操作Cookie

wangjianme 12年前

使用JavaScript操作Cookie

相关文档请见DHTML.CHM。里面有完整的操作方法说明。以下是代码示例。

1、使用JavaScript保存一个Cookie

var date = new Date();      //声明当前时间

var time = 1000*60*60*24;       //这是一天。1000毫秒(即1秒)*60=1分钟

time = date.getTime()+time;   //当前时间的毫秒值相加

date.setTime(time);          //设置时间,这时的时间已经是加上1天以后的时间了

var path = "<%=request.getContextPath()%>";//获取当前项目的目录

document.cookie="name=JSJack;expires="+date.toUTCString()+";path="+path;//保存Cookie

 

在上面的设置中,显式的设置了path。不果不设置则为当前页面所在的路径。

说明:在JS中保存Cookie时,格式有明确的说明为:


<!--[endif]-->

说明:GMT时间和UTC时间,都是标准时间,由于toGMTString已经被废弃,所以推荐使用toUTCString()

2、使用JS读取Cookie

var cs = document.cookie.split(";");//根据;(分号)分隔所有Cookie

div.innerHTML=cs.length;        //判断Cookie的个数写到已定义的div

for(var i=0;i<cs.length;i++){      //遍历Cookie

var c = cs[i];

div.innerHTML+="<br/>"+c;       //显示Cooke,格式为:Name=Value

}

显示结果如下:

1                                 //这是个数

name=JSJack                //这是Cookie

 

3、使用JS删除一个Cookie

       删除时,必须要与原来的值设置的完全一样,否则删除不成功。删除时,只要将时间设置为一个过期的时间即可以删除。

代码示例:

创建:

var date = new Date();      //声明当前时间

var time = 1000*60*60*24;       //这是一天。1000毫秒(即1秒)*60=1分钟

time = date.getTime()+time;   //当前时间的毫秒值相加

date.setTime(time);          //设置时间,这时的时间已经是加上1天以后的时间了

document.cookie="name=JSJack;expires="+date.toUTCString()+";path=/";//保存Cookie

删除:

<script type="text/javascript">

      //删除Cookie只要将时间设置为过期时间即可

      var date = new Date(1900,1,1);//声明一个已经过去的时间

      document.cookie="name=ok;expires="+date.toUTCString()+";path=/";//执行删除

</script>

 

4、保存中文示例

Cookie中不可以保存中文。有些浏览器如IE,虽然看上去可以处理中文,但会使整个JS解析终止,所以,不可以直接保存中文。

如果要保存中文,应该使用escape(string)进行编码,当然读取一个经过编码的cookie时,还必须要经过unescape(string)解码。关于escape的说明请查询JavaScript的文档:


<!--[endif]-->

保存中文的示例代码:

var date = new Date();      //声明当前时间

var time = 1000*60*60*24;       //这是一天。1000毫秒(即1秒)*60=1分钟

time = date.getTime()+time;   //当前时间的毫秒值相加

date.setTime(time);          //设置时间,这时的时间已经是加上1天以后的时间了

var cn = "你好";             //声明需要保存的中文

cn = escape(cn);            //对中文进行编码

document.cookie="name="+cn+";expires="+date.toUTCString()+";path=/";//保存Cookie

 

读取中文时当然也要进行unescape的解码:

var cs = document.cookie.split(";");//根据;(分号)分隔所有Cookie

div.innerHTML=cs.length;        //判断Cookie的个数写到已定义的div

for(var i=0;i<cs.length;i++){      //遍历Cookie

var c = cs[i];

div.innerHTML+="<br/>"+c;       //显示Cooke,格式为:Name=Value

var cc = c.split("=");          //根据=等于号进行分隔

div.innerHTML+="<br/>"+cc[0]+","+unescape(cc[1]);//value部分进行解码

}