本文从初学者层面详细介绍js对cookie的操作。
需求示例:当我们需要在网站中临时保存些字段,这些字段信息可能会在网站中的任何一个页面中都会用到,在当前页面下短暂的保存,我们设置变量就可以,关闭该网页信息也就随之不在了,相反,如果在其它页面也会用到相应信息,那最好的方法既是使用cookie了。
cookie是以键值对的形式保存的,即key=value的格式。
重要:目前在Mac的Safari浏览器中,cookie无法写入中文,经查资料证实,Safari不允许非ASCII编码的值,所以建议每次读写都使用encodeURI和decodeURI进行转码,下文的方法中有应用,可参考
下面贴出js写和读cookie的方法,需要拿走即可
//JS操作cookies方法:写cookies
function setCookie(name,value){
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name+"="+encodeURI(value)+";expires="+exp.toGMTString()+";path=/";
}
//JS操作cookies方法:读cookies正则筛选
function getCookie(name){
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
var cookie = decodeURI(document.cookie);
if(arr=cookie.match(reg)){
return unescape(arr[2]);
}else{
return null;
}
}
//JS操作cookies方法:删cookies,举例
function delCookie(name){
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
var cval=' ';
if(cval!=null){
document.cookie= name + "="+cval+";expires="+exp.toGMTString()+";path=/";
}
}
写cookie方法:name即为存储cookie的名称,value即为cookie存储的值,如果多条信息需要存储,可多次调用该方法,用相应的符号将每次的信息区分开,再用+(JS字符串拼接符号)把之前的信息和将要存储的信息拼接起来,之后再存到cookie中。
读 cookie的方法:读取的时候会将通过存储cookie的键值name将cookie的value读出,再通过该筛选匹配,返回的既是cookie的值,以数组形式存贮的所有键值。
在上面的代码中,有标红的一小段代码 +";path=/" ,这段代码如果查相关资料,可查出N多中说法,在这里我通俗简洁的说明一下,在默认情况下,创建cookie的网页和它同在一目录、在它的下级子目录下的所有网页都可以读取该cookie,但如果其它上级目录中的或者不在同级目录中的网页想要用该cookie,是不被允许的,这时候我们需要定义path来保证同一个网站中的所有页面都能使用这个cookie,而且path的路径要设为在根目录下才可以,上面代码中给出的案例既是在根目录下所有页面可使用,如果不定义path或者path路径不一样,则会造成不同的页面定了不同的cookie,各自操作各自cookie的情况。
删除cookie,有两种方案说明:
第一:把cookie的value值设为空,读取得时候要判断是否为空
第二:给cookie设置终止日期
//获取当前时间
var date=new Date();
//将date设置为过去的时间
date.setTime(date.getTime()-10000);
//将userId这个cookie删除
document.cookie="userId=828; expires="+date.toGMTString();
可自行将此段代码封装成方法调用
相关文章:
http://www.cftea.com/c/825.asp
http://www.blogjava.net/jjshcc/archive/2010/06/13/323517.html
js操作cookie介绍到此结束,如有见解或者疑问请在下方留言。