javascript操作cookie小记录
<script>
var cookie={
setcookie:function(name,value,days,path){
var cookie=name+"="+value;
if(days){
var date=new Date();
date.setTime(date.getTime()+days*24*3600*1000);
cookie+=";expires="+date.toUTCString();
}
if(path){
cookie+=";path="+'"'+path+'"';
}
document.cookie=cookie;
},
getcookie:function(name){
var reg= new RegExp(";?"+name+"=([^;]*)",'');
var cookie=document.cookie;
var values=cookie.match(reg);
alert(values[1]);
},
delecookie:function(name){
this.setcookie(name,'',-3001) }
}
cookie.setcookie('11','23',22,'')
cookie.delecookie('11');
//cookie.getcookie('age');
alert(document.cookie)
关于javascript写入cookie,其实很简单的。记录下原理吧,之所以封装了3个函数,主要是为了以后操作方便,直接用document.cookie属性进行cookie操作实在太粗糙不美观了。
第一个setcookie函数主要是写入cookie,cookie的本质就是一个字符串,涉及到的属性有name(名称),value(值),expires(cookie值失效日期,这是每个cookie的每个值都有的属性,一次设置只代表当前cookie值的失效时间,
一般用new Date()获取当前时间,然后用该方法返回值的getTime转化成微秒值再加上需要保存cookie的时间的微秒值后,又转化为正常时间。这里有一点要注意,这个时间要转化成gmt或者utc形式的,用toGMTString()或者toUTCString()方法进行转换,一般推荐是转化成utc方式的值,便于阅读。),
还有一个path值,path是指cookie的存储路径,一般cookie是和写它的网页相关联的,如果想让同一个域下的所有网页都可以访问cookie,将path的值设置 为'/'就可以了。
还有domain属性,鉴于同源策略的限制,一般cookie只能访问制定主机下的网页,也可以将domain设置为主机的子域,进行访问范围改变。secure 属性说明了cookie是在http下还是https下访问,默认是在http下访问的,若将其值设置为true,则在https下访问。
getcookie函数是获取相应的cookie值
获取对应的cookie的值有两种方法,两种方法的第一步都是先获取document.cookie的值,
第一种方法先将此字符串转化为数组,然后用for循环获得要获取的的对应值,然后再用一遍string的split方法获取相应的值。
第二种方法是直接用正则获取,如上面的示例,这种办法的重点在于match方法,因为正面里面涉及到小括弧分组,所以match获取的数组里面,第一个是获取的相匹配的name=value形式的值,第二个则是相应的小括弧里面匹配的值,也就是要获取的对象,在这里要注意一点,我们习惯性的写法是在match()函数里面直接写正则,如果这样的,getcookie()的形参是无法直接写入正则的,所以我们用 new RegRxp(),它的第一个参数本身就是一个字符串,所以这样写就可以避免这个问题。
delecookie是删除相应的cookie值,删除cookie的原理就是将cookie的值设置为过期,这就很好办了,对其cookie值附加一个expires值就可以了。
var Cookie = new Object();
Cookie.setCookie = function(name, value, option){
var str = name +'='+ escape(value);
if(option){
if(option.expireHours){
var d=new Date();
d.setTime(d.getTime()+option.expireHours*3600*1000);
str += '; expires='+d.toGMTString();
}
if(option.path) str += '; path='+option.path;
if(option.domain) str += '; domain='+option.domain;
if(option.secure) str += '; true';
}
document.cookie = str;
};
Cookie.getCookie = function(name){
var arr = document.cookie.split('; ');
if(arr.length == 0) return '';
for(var i=0; i tmp = arr[i].split('=');
if(tmp[0] == name) return unescape(tmp[1]);
}
return '';
};
Cookie.delCookie = function(name){
this.setCookie(name,'',{expireHours:-1});
};
Cookie.length = function(){
return document.cookie.split('; ').length;
};