javascript操做cookie小记录javascript
<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操做实在太粗糙不美观了。java
第一个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
Cookie.delCookie = function(name){
this.setCookie(name,'',{expireHours:-1});
};dom
Cookie.length = function(){
return document.cookie.split('; ').length;
};
ide