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.length 14 return unescape(document.cookie.substring(c_start,c_end)) 15 } 16 } 17 return "" 18 } 19 //这个里面如果cookie的名字设置与之前存在的名字一样,则会覆盖之前的cookie,如果过期时间设置的是现在时间之前,则就是删除cookie 20 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>