javascript自定义cookie

/**
* 自定义的cookie对象,方便进行cookie操作
*/
var MyCookie = function () {
this.expires = "", //
this.domain = "",
this.path = "",
this.secure = false,
this.name = "", //cookie的名称
this.value = [], //cookie的值
this.isReplace = true, //是否修改,默认true, false时不进行修改,而是对cookie进行值的添加操作,true时,则直接将cookie 对应的name的值,全部清空,设置为新值
this.allowDuplicate = false, //是否允许重复值,默认是不允许
//添加cookie
this.addCookie = function (ops) {
var str = _createCookie(ops);
},
//得到cookie,这是得到整个对象,不是得到值
this.getCookie = function (ops) {
if (ops.name) {
var cookie = _getCookie(ops);
return cookie;
}
return null;
};
};

//生成cookie,返回创建的cookie字符串
function _createCookie(ops) {
var str = "";
if (ops.name) {
if (ops.expires) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + ops.expires);
str += ";expires=" + exdate.toGMTString();
}
if (ops.domain) {
str += ";domain=" + ops.domain;
}
if (ops.path) {
str += ";path=" + ops.path;
}
if (ops.secure) {
str += ";secure=" + ops.secure;
}
var value = ops.value;
//拼接数组的字符串
var s = "";
if (value && value.length > 0) {
s = value.toString();
//是否修改
var isReplace = ops.isReplace;
if ((isReplace + "") == "undefined") {
isReplace = new MyCookie().isReplace;
}
//是否允许重复值
var allowDuplicate = ops.allowDuplicate;
if ((allowDuplicate + "") == "undefined") {
allowDuplicate = new MyCookie().allowDuplicate;
}
var cookie = _getCookie(ops);
//如果存在这个cookie
if (cookie) {
var vs = cookie.value;
vs = vs?vs:[];
//直接进行修改的情况
s = value.toString();
//不进行修改
if (!isReplace) {
var flag = false;
//不允许重复
if (!allowDuplicate) {
//判断是否已经存在该值,存在则不再添加,否则添加
for (var i = 0; i < vs.length; i++) {
var vv = vs[i];
if (value == vv) {
flag = true;
break;
}
}
if(flag){
s = vs.toString();
}else{
vs[vs.length] = value;
s = vs.toString();
}
}else{
vs[vs.length] = value;
s = vs.toString();
}
}
}
}
str += ";" + ops.name + "=" + s;
str = str.substring(1, str.length) + ";";
document.cookie = str;
}
return str;
}

//得到cookie
function _getCookie(ops) {
//创建cookie对象
var cookie = new MyCookie();
if (document.cookie.length > 0) {
//得到cookie的值
var getValue = function () {
var c_name = ops.name;
c_start = document.cookie.indexOf(c_name + "=");
if (c_start != -1) {
c_start = c_start + c_name.length + 1;
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) {
c_end = document.cookie.length;
}
var value = unescape(document.cookie.substring(c_start, c_end));
var vs = value.split(",");
return vs;
}
return "";
};
//得到domain
var getDomain = function () {
var domain = "domain";
c_start = document.cookie.indexOf(domain + "=");
if (c_start != -1) {
c_start = c_start + domain.length + 1;
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) {
c_end = document.cookie.length;
}
var value = unescape(document.cookie.substring(c_start, c_end));
return value;
}
return "";
};
//得到 expires
var getExpires = function () {
var expires = "expires";
c_start = document.cookie.indexOf(expires + "=");
if (c_start != -1) {
c_start = c_start + expires.length + 1;
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) {
c_end = document.cookie.length;
}
var value = unescape(document.cookie.substring(c_start, c_end));
return value;
}
return "";
};
cookie.value = getValue();
cookie.domain = getDomain();
cookie.expires = getExpires();
cookie.name = ops.name;
}
return cookie;
}

 

posted on 2013-06-15 22:11  java疯子  阅读(427)  评论(0)    收藏  举报

导航