网站地图    收藏   

主页 > 前端 > javascript >

javaScript 操作COOKIE实例代码分享

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] cookie在WEB更发中是常用的一个东西,我们不但在js中可以用,在php中也会用到,下面我来介绍一个cookie操作类,可以对cookie进行各种读取,删除操作。...

相对于javascript,通过后端的php来操作cookie是更容易简单的。所以由于以前很少通过JS去操作cookie,在使用javascript操作cookie时遇到了一些弯路,也分享出来,免得大家跟我犯同样的错误。

第一点,就是我知道document.cookie返回所有cookie组成的字符串,所以在设置cookie时,我想当然的以为是将新cookie拼接到该字符串上,再赋值给document.cookie就行了。

经过测试,完全不是这样,document.cookie=””; 是添加或更新新的cookie,比如document.cookie=”myck=yes;”则添加了个名字为myck的cookie;如果要同时添加多个cookie,document.cookie=”key1=1;key2=2;“ 就行了。如果要加上过期时间,存储域等信息,直接后面加上相关参数即可。比如:document.cookie=’myck=yes; expires=expire_time;domain=domain’。

该操作完全不影响已有的非同名cookie。

第二点,设置cookie的过期时间时,我错误的以为是设置个时间戳就行了,结果测来测去,发现没有效,cookie有效期总是session周期。后来才发现要用标准字符串时间格式,类似”Mon Jul 23 2012 20:08:10 GMT+0800 GMT“。如果用1343045321299这种,则是无效的。


cookie.js文件

 代码如下 复制代码

var COOKIE=(function(){

var getDateString=function(offset){

var date=new Date();

date.setTime(+date+offset*1000);

return date.toGMTString();

},

getCookies=function(){

var cookie=document.cookie||'',

subs=cookie.split(/;s?/),

_subs,cks={};

for(var i=0;i<subs.length,subs[i];i++){

_subs=subs[i].split('=')

cks[unescape(_subs[0])]=unescape(_subs.slice(1).join('='));

}

return cks;

}

 


return {

refresh:function(){

this.cookies=getCookies();

return this;

},

has:function(key){

return this.cookies[key]!=null;

},

get:function(key){

return this.cookies[key];

},

set:function(key,value,expire,path,domain,secure){

var myck=escape(key)+'='+escape(value==null?'':value);

if(!isNaN(expire=parseFloat(expire)))

myck+=';expires='+getDateString(expire);

if(path)myck+=';path='+path;

if(domain&&domain!=location.hostname)myck+=';domain='+domain;

if(secure)myck+=';secure';

document.cookie=myck;

return this.refresh().has(key);

},

remove:function(key,path,domain){

var paths=[],

domains=[],

arr,self=this;

if(path){

paths=[path];

}else{

arr=location.pathname.match(/.*?/|.+$/g);

this.each(arr,function(i){

var a;

paths.push(a=arr.slice(0,i+1).join(''));

if(/[^/]+/$/.test(a)){

paths.push(a.slice(0,-1));

}

if(/[^/]$/.test(a)){

paths.push(a+'/');

}

});

}

 


if(domain){

domains=[domain];

}else{

arr=location.hostname.split('.');

this.each(arr,function(i){

domains.push(arr.slice(-i).join('.'));

});

domains.push('.'+domains[0]);

}

 


this.each(paths,function(){

var path=this+'';

self.each(domains,function(){

self.set(key,'',-1000,path,this+'');

});

});

 


return !!path||!!domain||!this.has(key);

},

clear:function(path,domain){

for(var key in this.cookies){

this.remove(key,path,domain);

}

return !!path||!!domain||function(){

for(var key in this.cookies){

return false;

}

return true;

}.call(this);

},

each:function(arr,func){

var i=0,j=arr.length;

for(;i<j;i++){

if(func.call(arr[i],i)===false){

break;

}

}

}

}.refresh();

})();

// 首先在页面中引入COOKIE.js

 代码如下 复制代码

//调用
COOKIE.has(name); //检测是否有名字为name的cookie
COOKIE.set(key,value,expire,path,domain); //设置一个新cookie,true表示设置成功,false表示设置失败
COOKIE.remove(name,path,domain); //删除名为name的cookie,true表示删除成功,false表示删除失败
COOKIE.get(name); //获取名为name的cookie的值
COOKIE.clear(path,domain); //清除所有cookie

//注意:remove和clear方法,如果不设置path或domain,将会删除所有根域、子域、各个深度路径下的cookie。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论