cookie是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie可用。因此,cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用。
不同的浏览器对cookie的实现也不一样,但其性质是相同的。例如在Windows 2000以及Windows xp中,cookie文件存储于documents and settingsuserNamecookie文件夹下。通常的命名格式为:userName@domain.txt。
cookie机制将信息存储于用户硬盘,因此可以作为全局变量
代码如下 | 复制代码 |
/* *设置与获取Cookie */ var Cookie = {} //写入Cookie,key为键,value是值 //duration过期时间(天为单位,默认1天) Cookie.write = function (key, value, duration) { Cookie.remove(key); var d = new Date(); if (duration <= 0) duration = 1; d.setTime(d.getTime() + 1000 * 60 * 60 * 24 * duration); document.cookie = key + "=" + encodeURI(value) + "; expires=" + d.toGMTString() + ";path=/"; }; //移除Cookie,key为键 Cookie.remove = function (key) { var d = new Date(); if (Cookie.read(key) != "") { d.setTime(d.getTime() - (86400 * 1000 * 1)); document.cookie = key + "=;expires=" + d.toGMTString(); } }; //读取Cookie,key是键 //不存在返回空字符串"" Cookie.read = function (key) { var arr = document.cookie.match(new RegExp("(^| )" + key + "=([^;]*)(;|$)")); if (arr != null) return decodeURIComponent(arr[2]); return ""; }; |
实例
要用到2个js文件,history.js,关键的聊天记录保存和读取代码。json.js,对json进行处理。
代码如下 | 复制代码 |
var addHistory=function(num,id){ stringCookie=getCookie('history'); var stringHistory=""!=stringCookie?stringCookie:"{history:[]}"; var json=new JSON(stringHistory); var e="{num:"+num+",id:"+id+"}"; json['history'].push(e);//添加一个新的记录 setCookie('history',json.toString(),30); } //显示历史记录 var DisplayHistory=function(){ var p_ele=document.getElementById('history'); while (p_ele.firstChild) { p_ele.removeChild(p_ele.firstChild); } var historyJSON=getCookie('history'); |
json数据如下
代码如下 | 复制代码 |
var JSON = function(sJSON){ this.objType = (typeof sJSON); this.self = []; (function(s,o){for(var i in o){o.hasOwnProperty(i)&&(s[i]=o[i],s.self[i]=o[i])};})(this,(this.objType=='string')?eval('0,'+sJSON):sJSON); } JSON.prototype = { toString:function(){ return this.getString(); }, valueOf:function(){ return this.getString(); }, getString:function(){ var sA = []; (function(o){ var oo = null; sA.push('{'); for(var i in o){ if(o.hasOwnProperty(i) && i!='prototype'){ oo = o[i]; if(oo instanceof Array){ sA.push(i+':['); for(var b in oo){ if(oo.hasOwnProperty(b) && b!='prototype'){ sA.push(oo[b]+','); if(typeof oo[b]=='object') arguments.callee(oo[b]); } } sA.push('],'); continue; }else{ sA.push(i+':'+oo+','); } if(typeof oo=='object') arguments.callee(oo); } } sA.push('},'); })(this.self); return sA.slice(0).join('').replace(/[object object],/ig,'').replace(/,}/g,'}').replace(/,]/g,']').slice(0,-1); }, push:function(sName,sValue){ this.self[sName] = sValue; this[sName] = sValue; } } |
html代码
代码如下 | 复制代码 |
<script type="text/javascript" src="../js/json.js"></script> <script type="text/javascript" src="../js/history.js"></script> <ul id="history"> </ul> <script> addHistory(15810782304,2); addHistory(64654665,2); addHistory(6843212,2); addHistory(84984432521,2); setInterval("DisplayHistory()",1000); </script> |