首页 > 代码库 > JS cookie的使用

JS cookie的使用

cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript。可以由JavaScript对其进行控制,而并不是JavaScript本身的性质。cookie是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie可用。因此,cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用。

cookie是一种储存在本地的文件,用于下次访问网页的时候自动调用,直接读取客户端信息,避免重复执行,影响效率。

但是cookie也是有缺陷的,客户端如果浏览器禁用了cookie,这样就无法写入读取了。

每个cookie都是一个名/值对,把字符串赋值给document.cookie. 

在cookie 的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格。在cookie的名中做到这点很容易,但要保存的值是不确定的。如何来存储这些值呢?方法是用escape()函数进行编码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于cookie值中,而且使用此 种方案还可以避免中文乱码的出现。

document.cookie="str="+escape("I am rain");   //  escape()编码,读取的时候也需要解码 unescape(document.cookie);

下面是设置和获取cookie的函数。

 1 <html> 2 <head> 3 <script type="text/javascript"> 4 function getCookie(c_name)      //获取cookie   5 { 6 if (document.cookie.length>0)    //判断是否存在cookie 7   { 8   c_start=document.cookie.indexOf(c_name + "=") 9   if (c_start!=-1)10     { 11     c_start=c_start + c_name.length+1 12     c_end=document.cookie.indexOf(";",c_start)13     if (c_end==-1) c_end=document.cookie.length14     return unescape(document.cookie.substring(c_start,c_end))15     } 16   }17 return ""18 }19 //这个里面如果cookie的名字设置与之前存在的名字一样,则会覆盖之前的cookie,如果过期时间设置的是现在时间之前,则就是删除cookie20 function setCookie(c_name,value,expiredays)  //设置cookie, 参数是cookie 的名字,cookie的值 ,cookie的过期时间21 {22 var exdate=new Date()23 exdate.setDate(exdate.getDate()+expiredays)24 document.cookie=c_name+ "=" +escape(value)+25 ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())26 }27 28 </script>29 </head>30 31 <body>32 </body>33 </html>