document cookie 属性定义
cookie 属性可设置或查询与当前文档相关的所有 cookie。语法如下:
document.cookie [ = name1=value1; expire=GMT_String; path=; domain=;]
设置 cookie
设置 cookie 值
现在要设置两个 cookie:
user_id=2; user_name=admin;
JavaScript 代码如下:
document.cookie = "user_id=2"; document.cookie = "user_name=admin";设置 cookie 过期时间,路径及作用域
下面的例子设置过期时间为一天,路径为网站根目录,所有此域名下的 cookie 都共享:
//获取当前时间 var date=new Date(); date.setTime(date.getTime()+24*3600*1000); document.cookie = "user_id=2;path=/;domain=.5idev.com;expire="+date.toGMTString();
设置 cookie 有特殊符号
在 cookie 的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格,当值中需要保留这些符号时,需要用 escape() 函数进行编码,它能将一些特殊符号使用十六进制表示。
document.cookie = "test="+escape("JavaScript cookie test");
而在取出值以后再使用 unescape() 进行解码从而得到原来的 cookie 值,这种方法还能有效避免中文乱码等。
获取 cookie 值
通过 document.cookie 可以直接获取当前页面 cookie 的值,得到的是一个字符串。下面的例子读取当前页面的 cookie(如果有的话):
<html> <body> <p>与本文档相关的 cookies:</p> <script type="text/javascript"> document.write(document.cookie) </script> </body> </html>
运行该例子,输出如下(不同的文档及不同浏览器输出内容可能不同):
与本文档相关的 cookies: PHPSESSID=lk40pcgaqnh1s1545oqvbsrlo3; BHvI_2132_widthauto=1; BHvI_2132_ulastactivity=f1812nHW40njUS8xhWoNcehET9hmgMGu2Bxk2N7yrAjczvtwnxNN; BHvI_2132_lastcheckfeed=1%7C1352996907; BHvI_2132_auth=5230MHZEAi0DAOCDQtFhZVCtvcRTHKt%2BwZXXayJd5mjimRBXJHbyKAq2nm570bcBHUK2fJblfSUlmCPPrLn7; BHvI_2132_nofavfid=1; BHvI_f9e0_nofavfid=1; BHvI_f9e0_ulastactivity=65186DADp3j90bfuldtDqrvjeiR08WDS9zEv%2FllVdK%2FF1zUWF7bt
很遗憾 JavaScript 不支持直接通过 name 来获取对应的 cookie 值,需要通过处理得到的 cookies 字符串来实现:
var str_cookie = document.cookie; var arr_cookie = str_cookie.split("; "); var php_session; //遍历 arr_cookie 数组 for(var i=0;i<arr_cookie.length;i++){ var arr = arr_cookie[i].split("="); //找到名称为userId的cookie if("PHPSESSID"==arr[0]){ php_session=arr[1]; break; } } document.write(php_session);
更新 cookie 值
将需要更新的 cookie name 重新设定值即可,如果有过期时间,作用域等也需要一并设定。
删除 cookie 值
要删除一个cookie,将其过期时间设定为一个过去的时间即可:
var date=new Date(); date.setTime(date.getTime()-1000); document.cookie = "user_id=2;expire="+date.toGMTString();
参考阅读
- PHP Cookie
- JavaScript split:将字符串分割为字符串数组
- JavaScript 数组