Js 操作cookie
先写下cookie的组成:
name=<value>[; expires=<date>][; domain=<domain>][; path=<path>][; secure]
名称=<值>[; expires=<cookie要保存的毫秒值>][; domain=<域>][; path=<路径>][; 安全]
解释:
name是cookie的名字; value是必须的,是cookie里面存储的值可以存放不重要的数据,比如用户名;
剩下的只有expires和secure比较重要了,一个cookie的保存的时间,一个是cookie是否安全的设置。
下面会使用一个函数——escape(),这个函数比较重要,因为cookie值里可能包含分号、逗号或者空格,这个函数会将其编码。
当然,在读取cookie值时,必须使用对应的unescape()函数给值解码。
1. 向浏览器写回 cookie:
function setCookie(cookie_name, val, days){ var date=new Date(); //cookie保存时间的毫秒值 date.setTime(date.getTime() + days*24*3600*1000); document.cookie=cookie_name + "=" + escape(val)+ "; expires ="+ expiration.toGMTString() + "; path=" + "/" + ";domain=" + "mydomain.com" + "; secure"; }
2. 获取浏览器的 cookie
//获取指定名称的cookie function getCookie(cookie_name) { //获取cookie数组 var cookies = document.cookie; var cookie_start = cookies.indexOf(cookie_name); // 如果找到了索引,就代表cookie存在 // 反之,就说明不存在。 if (cookie_start != -1) { //获取value的开始位置 cookie_start += cookie_name.length + 1; //获取value的结束位置 var cookie_end = cookies.indexOf(";", cookie_start); if (cookie_end == -1) { cookie_end = cookies.length; } var value = unescape(cookies.substring(cookie_start, cookie_end)); return value; } //对应的cookie不存在 return null; }
3. 删除指定 cookie
function delCookie(cookie_name){ var date = new Date(); //将date设置为过去的时间 date.setTime(date.getTime() - 1); document.cookie = cookie_name + "= m; expires =" +date.toGMTString(); }
将上面的汇总:
var cookie = { //设置cookie set:function(cookie_name, val, days){ var date=new Date(); //cookie保存时间的毫秒值 date.setTime(date.getTime() + days*24*3600*1000); document.cookie=cookie_name + "=" + escape(val)+ "; expires ="+ expiration.toGMTString() + "; path=" + "/" + ";domain=" + "mydomain.com" + "; secure"; }, //获取指定名称的cookie get:function(cookie_name) { //获取cookie数组 var cookies = document.cookie; var cookie_start = cookies.indexOf(cookie_name); // 如果找到了索引,就代表cookie存在 // 反之,就说明不存在。 if (cookie_start != -1) { //获取value的开始位置 cookie_start += cookie_name.length + 1; //获取value的结束位置 var cookie_end = cookies.indexOf(";", cookie_start); if (cookie_end == -1) { cookie_end = cookies.length; } var value = unescape(cookies.substring(cookie_start, cookie_end)); return value; } //对应的cookie不存在 return null; } //删除cookie del:function(cookie_name){ var date = new Date(); //将date设置为过去的时间 date.setTime(date.getTime() - 1);
//获取要删除的 cookie
var co = get(cookie_name);
if(co != null) { //不为空就删除 document.cookie = cookie_name + "= m; expires =" + date.toGMTString();
} } }
4 . 调用:
cookie.set("uesrName","msym",24);//设置为24天过期 alert(cookie.get("uesrName"));//获取cookie
cookie.del("uesrName");//删除cookie
.