所谓
cookie,就是“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— 这是MSIE 帮助文档上所叙述的。一般来说,Cookies与 CGI 或类似,比 HTML 高级的文件、程序等创建的,但是 javascript 也提供了对
Cookies 的很全面的访问权利。
每个 Cookie 都有失效日期,一旦电脑的时钟过了失效日期,这个 Cookie 就会被删掉。我们不能直接删掉一个 Cookie,但是可以用设定失效日期早于现在时刻的方法来间接删掉它。
而每一“组” Cookies 有规定的总大小(大约 2KB 每“组”),一超过最大总大小,则最早失效的 Cookie 先被删除,来让新的 Cookie“安家”。
我们来看看 cookie用 JavaScript是如何进行操作的!
首先设置 cookie
每个 cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:
document.cookie="userId=125";
如果要一次存储多个名/值对,可以使用分号加空格(; )隔开,例如:
document.cookie="userId=828; userName=UFO";
在cookie的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格。在cookie的名中做
到这点很容易,但要保存的值是不确定的。如何来存储这些值呢?方法是用escape()函数进行编
码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于
cookie值中,而且使用此种方案还可以避免中文乱码的出现。例如:
document.cookie="str="+escape("I love UFO");
相当于:
document.cookie="str=I%20love%20UFO";
当使用escape()编码后,在取出值以后需要使用unescape()进行解码才能得到原来的cookie值,
这在前面已经介绍过。
尽管document.cookie看上去就像一个属性,可以赋不同的值。但它和一般的属性不一样,改变
它的赋值并不意味着丢失原来的值,例如连续执行下面两条语句:
document.cookie="userId=125";
document.cookie="userName=UFO";
这时浏览器将维护两个cookie,分别是userId和userName,因此给document.cookie赋值更像执
行类似这样的语句:
document.addCookie("userId=125");
document.addCookie("userName=UFO");
事实上,浏览器就是按照这样的方式来设置cookie的,如果要改变一个cookie的值,只需重新赋
值,例如:
document.cookie="userId=451";
这样就将名为userId的cookie值设置为了451。
获取cookie的值
下面介绍如何获取cookie的值。cookie的值可以由document.cookie直接获得:
var strCookie=document.cookie;
这将获得以分号隔开的多个名/值对所组成的字符串,这些名/值对包括了该域名下的所有cookie
。例如:
<script type="text/javascript">
<!--
document.cookie="userId=125";
document.cookie="userName=UFO";
var strCookie=document.cookie;
alert(strCookie);
//-->
</script>
当你看到运行效果后,由此可见,只能够一次获取所有的cookie值,而不能指定cookie
名称来获得指定的值,这正是处理cookie值最麻烦的一部分。用户必须自己分析这个字符串,来
获取指定的 cookie值,例如,要获取userId的值,可以这样实现:
<script type="text/javascript">
<!--
//设置两个cookie
document.cookie="userId=125";
document.cookie="userName=UFO";
//获取cookie字符串
var strCookie=document.cookie;
//将多cookie切割为多个名/值对
var arrCookie=strCookie.split("; ");
var userId;
//遍历cookie数组,处理每个cookie对
for(var i=0;i<arrCookie.length;i++){
var arr=arrCookie .split("=");
//找到名称为userId的cookie,并返回它的值
if("userId"==arr[0]){
userId=arr[1];
break;
}
}
alert(userId);
//-->
</script>
这样就得到了单个cookie的值
每个 Cookie 都有失效日期,一旦电脑的时钟过了失效日期,这个 Cookie 就会被删掉。我们不能直接删掉一个 Cookie,但是可以用设定失效日期早于现在时刻的方法来间接删掉它。
而每一“组” Cookies 有规定的总大小(大约 2KB 每“组”),一超过最大总大小,则最早失效的 Cookie 先被删除,来让新的 Cookie“安家”。
我们来看看 cookie用 JavaScript是如何进行操作的!
首先设置 cookie
每个 cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:
document.cookie="userId=125";
如果要一次存储多个名/值对,可以使用分号加空格(; )隔开,例如:
document.cookie="userId=828; userName=UFO";
在cookie的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格。在cookie的名中做
到这点很容易,但要保存的值是不确定的。如何来存储这些值呢?方法是用escape()函数进行编
码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于
cookie值中,而且使用此种方案还可以避免中文乱码的出现。例如:
document.cookie="str="+escape("I love UFO");
相当于:
document.cookie="str=I%20love%20UFO";
当使用escape()编码后,在取出值以后需要使用unescape()进行解码才能得到原来的cookie值,
这在前面已经介绍过。
尽管document.cookie看上去就像一个属性,可以赋不同的值。但它和一般的属性不一样,改变
它的赋值并不意味着丢失原来的值,例如连续执行下面两条语句:
document.cookie="userId=125";
document.cookie="userName=UFO";
这时浏览器将维护两个cookie,分别是userId和userName,因此给document.cookie赋值更像执
行类似这样的语句:
document.addCookie("userId=125");
document.addCookie("userName=UFO");
事实上,浏览器就是按照这样的方式来设置cookie的,如果要改变一个cookie的值,只需重新赋
值,例如:
document.cookie="userId=451";
这样就将名为userId的cookie值设置为了451。
获取cookie的值
下面介绍如何获取cookie的值。cookie的值可以由document.cookie直接获得:
var strCookie=document.cookie;
这将获得以分号隔开的多个名/值对所组成的字符串,这些名/值对包括了该域名下的所有cookie
。例如:
<script type="text/javascript">
<!--
document.cookie="userId=125";
document.cookie="userName=UFO";
var strCookie=document.cookie;
alert(strCookie);
//-->
</script>
当你看到运行效果后,由此可见,只能够一次获取所有的cookie值,而不能指定cookie
名称来获得指定的值,这正是处理cookie值最麻烦的一部分。用户必须自己分析这个字符串,来
获取指定的 cookie值,例如,要获取userId的值,可以这样实现:
<script type="text/javascript">
<!--
//设置两个cookie
document.cookie="userId=125";
document.cookie="userName=UFO";
//获取cookie字符串
var strCookie=document.cookie;
//将多cookie切割为多个名/值对
var arrCookie=strCookie.split("; ");
var userId;
//遍历cookie数组,处理每个cookie对
for(var i=0;i<arrCookie.length;i++){
var arr=arrCookie .split("=");
//找到名称为userId的cookie,并返回它的值
if("userId"==arr[0]){
userId=arr[1];
break;
}
}
alert(userId);
//-->
</script>
这样就得到了单个cookie的值
<script src="tag.php?action=relatetag&rtid=110" type="text/javascript"></script>