js被c#、java等开发者视为声名狼藉的附属编程语言是有道理的,比如说,对cookie的操作。js就没有一套类似c#的现成处理方案,而只能由你自己去完成。下面我就将自己学习的用面向对象的思想对cookie进行处理的学习笔记整理一下,以飨读者。
cookie的常见操作分析:
(1)设置cookie 包括了添加和修改功能,事实上如果原有cookie 名称已经存在,那么添加此cookie 就相当于修改了此cookie。在设置cookie 的时候可能还会有一些可选项,用于指cookie 的声明周期、访问路径以及访问域和安全性等等。为了让cookie 中能够存储中文,该方法中还需要对存储的值进行编码。
(2)取一个cookie的值,该方法接收cookie 名称为参数,返回该cookie 的值。因为在存储该值的时候已经进行了编码,所以取值时应该能自动解码,然后返回(这里其实可以自己设置返回什么,而不单单是取一个值而已)。
(3)删除一个cookie,删除cookie 只需将一个cookie 的过期事件设置为过去的一个时间即可,它接收一个cookie 的名称为参数,从而删除此cookie(我的实现还将cookie名称设置为空,这是考虑到今后可能会有多个cookie要设置的时候,名称发生冲突的情况)。
(4)其他 (这里让读者自己去考虑其他的操作,不赘述了。)
好的,你一定又猜到我要说什么了,对头,code is cheap.看代码:
/* 对cookie的操作 *///创建var cookie = new object();//设置(修改)属性和方法cookie.setcookie = function(sname, svalue, oexpires, spath, sdomain, bsecure) { var scookie = sname + = + escape(svalue); // 名称和值 if (oexpires) { scookie += ; expires= + oexpires.togmtstring(); // 过期时间 } if (spath) { scookie += ; path= + spath; // 访问路径 } if (sdomain) { scookie += ; domain= + sdomain; // 访问路径 } if (bsecure) { scookie += ; true; // 安全性 } document.cookie = scookie;}//获取cookie.getcookie = function(sname) { var cookiearray = document.cookie.split(;); //得到分割的名值对 var tempcookie = new object(); for (var i = 0; i < cookiearray.length; i++) { var temparr = cookiearray[i].split(=); //将名称和值分开 if (temparr[0] == sname) { //如果是指定的cookie,返回它的值 return unescape(temparr[1]); } } return there's no such a cookie name!;}//删除cookie.deletecookie = function(sname, spath, sdomain) { var scookie = sname + =; expires= + (new date(0)).togmtstring(); // 设置名称为空,过期时间为0,也可以设置过期时间为负数 (var scookie = sname + =; expires=-1; ) if (spath) { scookie += ; path= + spath; } if (sdomain) { scookie += ; domain= + sdomain; } document.cookie = scookie;}function test() { cookie.setcookie(test, cookietest); alert(cookie.getcookie(test)); alert(cookie.getcookie(test2)); // ??? cookie.deletecookie(test); alert(cookie.getcookie(test));}
补充:javascript 操作cookie类
string.prototype.trim = function(){ return this.replace(/^\s+/g,).replace(/\s+$/g,);}function jscookie(){ this.getcookie = function(key) { var cookie = document.cookie; var cookiearray = cookie.split(';'); var getvalue = ; for(var i = 0;i
一、设置cookie
var cookie = new jscookie();//普通设置cookie .setcookie(key1,val1);//过期时间为一年var expire_time = new date();expire_time.setfullyear(expire_time.getfullyear() + 1);cookie .setcookie(key2,val2,expire_time);//设置域及路径,带过期时间cookie .setcookie(key3,val3,expire_time,.cnblogs.com,/);//设置带子键的cookie,子键分别是k1,k2,k3cookie .setcookie(key4,k1=1&k2=2&k3=3);
二、读取cookie
//简单获取cookie .getcookie(key1);cookie .getcookie(key2);cookie .getcookie(key3);cookie .getcookie(key4);//获取key4的子键k1值cookie .getchild(key4,k1);
三、删除
cookie .expire(key1);cookie .expire(key2);cookie .expire(key3);cookie .expire(key4);
希望本文所述对大家javascript程序设计有所帮助。