在JS里,内置于BOM对象有一种称为Cookie的对象,它形如:
name=**;domain=**;path=**;....
在FireFox浏览器里可以通过编辑 ->首选项->隐私->自定义历史记录设置里,查看cookie的值等
设置和查询、删除cookie的方法如下所示:
var CookieUtil={ /** * 获取指定名称的cookie的值 */ get:function(name){ var cookieName=encodeURIComponent(name)+"="; var cookieStart=document.cookie.indexOf(cookieName); var cookieValue=null; if(cookieStart>=-1){ var cookieEnd=document.cookie.indexOf(";", cookieStart); if(cookieEnd==-1){ cookieEnd=document.cookie.length; } cookieValue=decodeURIComponent(document.cookie.substring(cookieStart, cookieEnd)); } return cookieValue; }, /** * 设置cookie * 形如name=**;expires=**;domain=**;secure * * @param name Cookie的名称 * @param value Cookie的值 * @param expires Cookie的过期时间 * @param path 对于指定域,才会向服务器发送cookie * @param domain Cookie对于哪个域是有效的,所有向该域发送的请求里都会包含这个cookie信息 * @param secure 指定后,cookie只有在使用ssl连接的时候才会发送到服务器(https以SSL为基础) */ set:function(name,value,expires,path,domain,secure){ var cookieText=encodeURIComponent(name)+"="+encodeURIComponent(value); if(expires instanceof Date){ cookieText+=";expires="+expires.toGMTString(); } if(path){ cookieText+=";path="+path; } if(domain){ cookieText+=";domain="+domain; } if(secure){ cookieText+=";secure"; } document.cookie=cookieText; }, //取消cookie unset:function(name, value, path, domain, secure){ this.set(name, value, new Date(0), path, domain, secure); } };
调用的例子如下所示:
(function(){ CookieUtil.set('name', 'Nicholas'); CookieUtil.set('book','thinking in java'); console.log('Cookie:'+CookieUtil.get('name')); console.log('Cookie:'+CookieUtil.get('book')); CookieUtil.unset('name'); CookieUtil.unset('book'); CookieUtil.set('book', 'thinking in python', new Date('January 1,2013'), '/book/','http://wrox.com'); })();