js中的cookie的读写操作
cookie
cookie是一小段信息,以键/值对的信息保存在计算机硬盘上的字符串, cookie存储容量大概在4kb,不同的浏览器厂家对cookie大小的限制有微微的差异;cookie主要的本质是“识别”,通过识别来做一些事情;cookie 也是无法从你的硬盘取得任何其它数据,传送电脑病毒或者获取你的电子邮件地址。cookie是有有效期的,cookie的默认有效期是从cookie生成至浏览器关闭,也可以通过设置cookie的有效期来指定其失效日期;用户也可以禁止cookie也可以手动删除cookie。
cookie是字符串而且还是一个特定格式的文本字符串
格式:cookieName=cookieValue;expires=expiresDate;path=URLpath;domain=siteDomain//cookie名称,失效日期,储存URL,储存域值;
cookie的创建方式
设置cookie我们一般都封装成一个函数:
1 function addCookie(sName,sValue,day) { 2 var expireDate = new Date(); 3 expireDate.setDate(expireDate.getDate()+day);; 4 //设置失效时间 5 document.cookie = escape(sName) + '=' + escape(sValue) +';expires=' + expireDate.toGMTString();6 //escape()汉字转成unicode编码,toGMTString() 把日期对象转成字符串 7 }
读取cookie
添加了cookie之后,我们如何来获取它呢,很简单:
1 function getCookies() { 2 var showAllCookie = ''; 3 if(!document.cookie == ''){ 4 var arrCookie = document.cookie.split('; '); 5 //用spilt('; ')切割所有cookie保存在数组arrCookie中 6 var arrLength = arrCookie.length; 7 for(var i=0; i<arrLength; i++) { 8 showAllCookie += 'c_name:' + unescape(arrCookie[i].split('=')[0]) + 'c_value:' + unescape(arrCookie[i].split('=')[1]) + '<br>' 9 } 10 return showAllCookie; 11 } 12 }
cookie有有效期可自动删除,也可以通过设置其失效日期来立即删除
一样很简单,继续:
function removeCookie() { if(document.cookie != '' && confirm('你想清理所有cookie吗?')) { var arrCookie = document.cookie.split('; '); var arrLength = arrCookie.length; var expireDate = new Date(); expireDate.setDate(expireDate.getDate()-1); for(var i=0; i<arrLength; i++) { var str = arrCookie[i].split('=')[0]; document.cookie = str+ '=' + ';expires=' + expireDate.toGMTString(); } } }
我们已经知道如何创建、获取、删除cookie了,现在也该运用cookie了
下面我们用cookie做一个简单的计时器:
1 var cookieCount = {}; 2 cookieCount.count = function () { 3 var count = parseInt(this.getCount('myCount')); 4 count++; 5 document.cookie = 'myCount=' + count + ''; 6 alert('第'+count+'访问'); 7 } 8 cookieCount.setCount= function () { 9 //首先得创建一个名为myCount的cookie 10 var expireDate = new Date(); 11 expireDate.setDate(expireDate.getDate()+1); 12 document.cookie = 'myCount=' + '0' +';expires=' + expireDate.toGMTString(); 13 } 14 cookieCount.getCount = function (countName) { 15 //获取名为计数cookie,为其加1 16 var arrCookie = document.cookie.split('; '); 17 var arrLength = arrCookie.length; 18 var ini = true; 19 for(var i=0; i<arrLength; i++) { 20 if(countName == arrCookie[i].split('=')[0]){ 21 return parseInt(arrCookie[i].split('=')[1]); 22 break; 23 }else{ 24 ini = false; 25 } 26 } 27 if(ini == false)this.setCount(); 28 return 0; 29 } 30 cookieCount.count();
cookie的路径
本文开头的时候提到cookie的路径设置 cookie的路径:path=URL;
如果在域名的子目录创建的cookie,域名及其他同级目录或上级目录是访问不到这个cookie的,而通过设置路径的好处就是可以上域名以及域名的子类目录都可以访问到,如下:
document.cookie='cookieName=cookieValue;expires=expireDate;path=/'。
cookie域
设置域:domain=siteDomain
这个主要用在同域的情况下共享一个cookie,例如 "www.taobao.com" 与 "ued.taobao.com" 两者是共享一个域名"taobao.com",我们如果想让 "www.taobao.com" 下的cookie被 "ued.taobao.com" 访问,那么就需要把path属性设置为 "/",并且设置 cookie 的domain-->document.cookie='cookieName=cookieValue;expires=expireDate;path=/;domain=taobao.com'。
随着web的不断发展项目中的需要,HTML5提供了两个属性window.sessionStorage和window.localStorage,并携带了setItem,getItem,removeItem,clear等方法,使得本地存储数据的方法操作更为简单便利。详细介绍应用,可移步:http://www.cnblogs.com/xiaowei0705/archive/2011/04/19/2021372.html