分享:JavaScript操作Cookie工具文件
2008-08-21 08:33
381 查看
版权所有:刺桐红-技术工作室 王重光 蓝文雄
声明:分享类型的文章均为我们工作室为了项目需求封装的工具类,本着分享合作的信念,其中如有错误,欢迎来信交流
lwx707@hotmail.com 2008-08-21
//====Config==开始========================================================
//***************************部署修改************************************
var config_strDomain= ""; //域名
//该域名在下面的Cookie操作方法中有用到,放空直接从URL路径中识别
//所以开发过程,我们放空,但部署后要设n0.cn,这样COOKIE才会对二级域名有效
//====Config==结束========================================================
//去掉字符串前后空格 使用 str*** = str***.Trim();
String.prototype.Trim = function()
{
return this.replace(/(^\s+)|\s+$/g,"");
}
//====cookie操作==开始====================================================
//将COOKIE中使用的iExpires秒数转化为链接成document.cookie值的Expires串,如“;expires=***”
//(秒数),1表示10年有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)
function CookieExpires(iExpires)
{
if(iExpires != 0)
{
if(iExpires==1)
{
var expiresDate = new Date((new Date()).getTime() + 315360000 * 1000).toGMTString();
}
else
{
var expiresDate = new Date((new Date()).getTime() + iExpires * 1000).toGMTString();
}
return ";expires="+expiresDate;
}
else
{
return "";
}
}
//将COOKIE中使用的域strDomain转化为链接成document.cookie值的domain串,如“;domain=***”
function CookieDomain(strDomain)
{ //***************************部署修改************************************
if(strDomain == "" || strDomain == null)
{
if(config_strDomain == "") ////////////////////////////////////////////////////////////////////
{ /////////////////////
return ""; ///////////////////// 当系统部署后,系统将在带“.”的域下工作
} ///////////////////// 上面的config_strDomain也必设有值
else ///////////////////// 所以这段话可以删掉,只需用一句话就可以了:
{ ///////////////////// 就是“return ";domain="+config_strDomain;”
return ";domain="+config_strDomain; /////////////////////
} ////////////////////////////////////////////////////////////////////
}
else
{
return ";domain="+strDomain;
}
}
//将COOKIE中使用的作用路径strPath转化为链接成document.cookie值的path串,如“;path=***”
function CookiePath(strPath)
{
if(strPath == "" || strPath == null)
{
return "";
}
else
{
return ";path="+strPath;
}
}
/// 创建COOKIE对象并赋Value值
/// <summary>
/// 创建COOKIE对象并赋Value值,修改COOKIE的Value值也用此方法,因为对COOKIE修改必须重新设Expires
/// 使用:当只设Path而不设Domain时:SetCookieObj_Value("***","****",****,"","****");
/// </summary>
/// <param name="strCookieName">COOKIE对象名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示10年有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)</param>
/// <param name="strValue">COOKIE对象Value值</param>
/// <param name="strDomain">COOKIE对象作用域</param>
/// <param name="strPath">COOKIE对象作用路径</param>
function SetCookieObj_Value(strCookieName,strValue,iExpires,strDomain,strPath)
{ //***************************部署修改************************************
if(strCookieName == "" || strCookieName == null) ////////////////////////////////////////////////////////////////
{ ////////////////////////////////////////////////////////////////
alert("“strCookieName”不可为空"); ////////////////////////////////////////////////////////////////
} ////////
if(strValue == null) //////// 这一部分,
{ //////// 当系统部署时可以去掉
alert("“strValue”不可为空"); ////////
} //////// 因为其作用只是在开发过程中进行报错
if(iExpires == "" || iExpires == null) ////////
{ ////////////////////////////////////////////////////////////////
alert("“iExpires”不可为空"); ////////////////////////////////////////////////////////////////
} ////////////////////////////////////////////////////////////////
document.cookie = strCookieName.Trim() + "=" + encodeURIComponent(strValue.Trim()) + CookieExpires(iExpires) + CookieDomain(strDomain) + CookiePath(strPath);
}
/// 创建COOKIE对象并赋Value值(仅用于KEY修改操作时用,因为没有进行编码)
/// <summary>
/// 创建COOKIE对象并赋Value值(仅用于KEY修改操作时用,因为没有进行编码)
/// 使用:当只设Path而不设Domain时:SetCookieObj_Edit("***","****",****,"","****");
/// </summary>
/// <param name="strCookieName">COOKIE对象名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示10年有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)</param>
/// <param name="strValue">COOKIE对象Value值</param>
/// <param name="strDomain">COOKIE对象作用域</param>
/// <param name="strPath">COOKIE对象作用路径</param>
function SetCookieObj_Edit(strCookieName,strValue,iExpires,strDomain,strPath)
{ //***************************部署修改************************************
if(strCookieName == "" || strCookieName == null) ////////////////////////////////////////////////////////////////
{ ////////////////////////////////////////////////////////////////
alert("“strCookieName”不可为空"); ////////////////////////////////////////////////////////////////
} ////////
if(strValue == null) //////// 这一部分,
{ //////// 当系统部署时可以去掉
alert("“strValue”不可为空"); ////////
} //////// 因为其作用只是在开发过程中进行报错
if(iExpires == "" || iExpires == null) ////////
{ ////////////////////////////////////////////////////////////////
alert("“iExpires”不可为空"); ////////////////////////////////////////////////////////////////
} ////////////////////////////////////////////////////////////////
document.cookie = strCookieName.Trim() + "=" + strValue + CookieExpires(iExpires) + CookieDomain(strDomain) + CookiePath(strPath);
}
/// 创建COOKIE对象并赋多个KEY键值
/// <summary>
/// 创建COOKIE对象并赋多个KEY键值
/// 1、使用:当只设Path而不设Domain时:SetCookieObj_Key("***","****",****,"","****");
/// 2、设键/值如下:
/// var user = new Array();
/// user[0]={keyName:"lwx",keyValue:"2008"};
/// user[1]={keyName:"lwx11",keyValue:"2009"};
/// 访问:user[0].keyName=lwx user[0].keyValue=2008
/// 访问:user[1].keyName=lwx11 user[1].keyValue=2009
/// </summary>
/// <param name="strCookieName">COOKIE对象名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示10年有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)</param>
/// <param name="KeyValue">键/值对集合</param>
/// <param name="strDomain">COOKIE对象作用域</param>
/// <param name="strPath">COOKIE对象作用路径</param>
function SetCookieObj_Key(strCookieName,KeyValue,iExpires,strDomain,strPath)
{ //***************************部署修改************************************
if(strCookieName == "" || strCookieName == null) ////////////////////////////////////////////////////////////////
{ ////////////////////////////////////////////////////////////////
alert("“strCookieName”不可为空"); ////////////////////////////////////////////////////////////////
return; ////////////////////////////////////////////
} ////////////////////////////////////////////////////////////////
for(var i=0;i < KeyValue.length;i++) ////////////////////////////////////////////////////////////////
{ ////////////////////////////////////////////////////////////////
if(KeyValue[i].keyName =="" || KeyValue[i].keyName == null) ////////
{ ////////
alert("“keyName”不可为空"); ////////
return; //////// 这一部分,
} //////// 当系统部署时可以去掉
if(KeyValue[i].keyValue == null) //////// 因为其作用只是在开发过程中进行报错
{ ////////
alert("“KeyValue”不可为空"); ////////
return; ////////
} ////////////////////////////////////////////////////////////////
} ////////////////////////////////////////////////////////////////
if(iExpires == "" || iExpires == null) ////////////////////////////////////////////////////////////////
{ ////////////////////////////////////////////////////////////////
alert("“iExpires”不可为空"); ////////////////////////////////////////////////////////////////
return; ////////////////////////////////////////////////////////////////
} ////////////////////////////////////////////////////////////////
var strValue="";
for(var i=0;i < KeyValue.length;i++)
{
var keyName=KeyValue[i].keyName.Trim();
var keyValue=encodeURIComponent(KeyValue[i].keyValue.Trim());
strValue += keyName;
strValue += "=";
strValue += keyValue;
if(i==KeyValue.length-1)
{
break;
}
strValue += "&";
}
document.cookie = strCookieName.Trim() + "=" + strValue + CookieExpires(iExpires) + CookieDomain(strDomain) + CookiePath(strPath);
}
/// 读取Cookie某个对象的Value值
/// <summary>
/// 读取Cookie某个对象的Value值
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <returns>Value值,如果对象本就不存在,则返回字符串"CookieNonexistence"</returns>
function GetCookieObjValue(strCookieName)
{
var strAllCookies=document.cookie; //获取所有Cookie对象,以字符串形式返回(如:objName1=objCo1;objName2=objCo2;objName3=keyName1=keyValue1&keyName2=keyValue2)
var arrayCookies=strAllCookies.split(';'); //分离Cookie对象,返回Cookie对象数组,cookie对象间是以;分隔
for(var i=0;i<arrayCookies.length;i++) //读取各个Cookie对象
{
var cookieObj=arrayCookies[i].Trim(); //第i个cookie对象
var iStartPos = cookieObj.indexOf(strCookieName+"=");
if(iStartPos == 0)
{
var strObjValue = cookieObj.replace(strCookieName+"=","");
var iIsEqualSign = strObjValue.indexOf("=");
if(iIsEqualSign == -1)
{
return decodeURIComponent(strObjValue);
}
else
{
return strObjValue;
}
}
var iIsEqualSign = cookieObj.indexOf("=");
if(iIsEqualSign == -1) //说明Cookie的Value值为空
{
return "";
}
}
return "CookieNonexistence";
}
/// 读取Cookie某个对象的某个Key键的键值
/// <summary>
/// 读取Cookie某个对象的某个Key键的键值
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <param name="strKeyName">Key键名</param>
/// <returns>Key键值,如果对象本就不存在,则返回字符串"CookieNonexistence",如果Key键不存在,则返回字符串"KeyNonexistence"</returns>
function GetCookieKeyValue(strCookieName,strKeyName)
{
var strValue = GetCookieObjValue(strCookieName).Trim();
if(strValue=="CookieNonexistence")
{
return "CookieNonexistence";
}
var arrayKey=strValue.split('&');
for(var j=0;j<arrayKey.length;j++)
{
var arrayKeyAndValue=arrayKey[j].split('='); //得到某个键名与键值组成的只有两个元素的数组
if(strKeyName==arrayKeyAndValue[0])
{
return decodeURIComponent(arrayKeyAndValue[1]);
}
}
return "KeyNonexistence";
}
/// 修改某个COOKIE对象某个Key键的键值 或 给某个COOKIE对象添加Key键 都调用本方法
/// <summary>
/// 修改某个COOKIE对象某个Key键的键值 或 给某个COOKIE对象添加Key键 都调用本方法
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <param name="strKeyName">Key键名</param>
/// <param name="strKeyValue">Key键值</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示永久有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)。注意:虽是修改功能,实则重建覆盖,所以时间也要重设,因为没办法获得旧的有效期</param>
/// <returns>如果对象本就不存在,则返回字符串"CookieNonexistence",如果操作成功返回字符串"success"。</returns>
function EditCookieKey(strCookieName,strKeyName,strKeyValue,iExpires)
{
var strOldKeyValue = GetCookieKeyValue(strCookieName,strKeyName);
if(strOldKeyValue=="CookieNonexistence")
{
return "CookieNonexistence";
}
if(strOldKeyValue=="KeyNonexistence") //找不到键,以下直接添加键/值对
{
var strObjValue = GetCookieObjValue(strCookieName);
if(strObjValue == "") //对象的值都为空了,那么键就不用加“&”
{
strObjValue += strKeyName+"=";
strObjValue += encodeURIComponent(strKeyValue.Trim());
}
else
{
strObjValue += "&"+strKeyName+"=";
strObjValue += encodeURIComponent(strKeyValue.Trim());
}
SetCookieObj_Edit(strCookieName,strObjValue,iExpires); //这里会出现一种情况,就是strObjValue本身只是简单字符串,那么加了键/值对,结果的strObjValue就不是纯字符串,也不是纯键值对,而是二者并存,我们在使用中要尽量避免这种情况的产生。
return "success";
}
else //找到键,以下进行修改键/值对
{
var strOldKeyValue = GetCookieKeyValue(strCookieName,strKeyName);
var strOldKeyString = strKeyName +"="+encodeURIComponent(strOldKeyValue);
var strNewKeyString = strKeyName +"="+encodeURIComponent(strKeyValue.Trim());
var strObjValue = GetCookieObjValue(strCookieName);
var strObjNewValue = strObjValue.replace(strOldKeyString,strNewKeyString);
SetCookieObj_Edit(strCookieName,strObjNewValue,iExpires);
return "success";
}
}
/// 删除COOKIE对象
/// <summary>
/// 删除COOKIE对象
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
function DelCookie(strCookieName)
{
var strObjValue = GetCookieObjValue(strCookieName);
if(strObjValue=="CookieNonexistence")
{
return;
}
SetCookieObj_Value(strCookieName,"",-1);
}
/// 删除某个COOKIE对象某个Key子键
/// <summary>
/// 删除某个COOKIE对象某个Key子键
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <param name="strKeyName">Key键名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示永久有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)。注意:虽是删除功能,但只是删除某键,整个Cookie对象实则重建覆盖,所以时间也要重设,因为没办法获得旧的有效期</param>
/// <returns>如果对象本就不存在,则返回字符串"CookieNonexistence",找不到KEY键盘,返回"KeyNonexistence",如果操作成功返回字符串"success"。</returns>
function DelCookieKey(strCookieName,strKeyName,iExpires)
{
var strOldKeyValue = GetCookieKeyValue(strCookieName,strKeyName);
if(strOldKeyValue=="CookieNonexistence")
{
return "CookieNonexistence";
}
if(strOldKeyValue=="KeyNonexistence") //找不到键
{
return "KeyNonexistence";
}
else //找到键,以下进行修改键/值对
{
var strKeyValue = GetCookieKeyValue(strCookieName,strKeyName);
var strKeyString = strKeyName +"="+encodeURIComponent(strKeyValue);
var strObjNewValue ="";
var strObjValue = GetCookieObjValue(strCookieName);
var iIsOneKey = strObjValue.indexOf("&"+strKeyString);
if(iIsOneKey == -1) //说明是第一个键
{
strObjNewValue = strObjValue.replace(strKeyString+"&",""); //后面还有键时,但也有可能后面没有键,那这句话就删除不掉了
strObjNewValue = strObjNewValue.replace(strKeyString,""); //后面没有键时,多加这句话,确保成功删除
}
else
{
strObjNewValue = strObjValue.replace("&"+strKeyString,"");
}
SetCookieObj_Edit(strCookieName,strObjNewValue,iExpires);
return "success";
}
}
//====cookie操作==结束========================================================
声明:分享类型的文章均为我们工作室为了项目需求封装的工具类,本着分享合作的信念,其中如有错误,欢迎来信交流
lwx707@hotmail.com 2008-08-21
//====Config==开始========================================================
//***************************部署修改************************************
var config_strDomain= ""; //域名
//该域名在下面的Cookie操作方法中有用到,放空直接从URL路径中识别
//所以开发过程,我们放空,但部署后要设n0.cn,这样COOKIE才会对二级域名有效
//====Config==结束========================================================
//去掉字符串前后空格 使用 str*** = str***.Trim();
String.prototype.Trim = function()
{
return this.replace(/(^\s+)|\s+$/g,"");
}
//====cookie操作==开始====================================================
//将COOKIE中使用的iExpires秒数转化为链接成document.cookie值的Expires串,如“;expires=***”
//(秒数),1表示10年有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)
function CookieExpires(iExpires)
{
if(iExpires != 0)
{
if(iExpires==1)
{
var expiresDate = new Date((new Date()).getTime() + 315360000 * 1000).toGMTString();
}
else
{
var expiresDate = new Date((new Date()).getTime() + iExpires * 1000).toGMTString();
}
return ";expires="+expiresDate;
}
else
{
return "";
}
}
//将COOKIE中使用的域strDomain转化为链接成document.cookie值的domain串,如“;domain=***”
function CookieDomain(strDomain)
{ //***************************部署修改************************************
if(strDomain == "" || strDomain == null)
{
if(config_strDomain == "") ////////////////////////////////////////////////////////////////////
{ /////////////////////
return ""; ///////////////////// 当系统部署后,系统将在带“.”的域下工作
} ///////////////////// 上面的config_strDomain也必设有值
else ///////////////////// 所以这段话可以删掉,只需用一句话就可以了:
{ ///////////////////// 就是“return ";domain="+config_strDomain;”
return ";domain="+config_strDomain; /////////////////////
} ////////////////////////////////////////////////////////////////////
}
else
{
return ";domain="+strDomain;
}
}
//将COOKIE中使用的作用路径strPath转化为链接成document.cookie值的path串,如“;path=***”
function CookiePath(strPath)
{
if(strPath == "" || strPath == null)
{
return "";
}
else
{
return ";path="+strPath;
}
}
/// 创建COOKIE对象并赋Value值
/// <summary>
/// 创建COOKIE对象并赋Value值,修改COOKIE的Value值也用此方法,因为对COOKIE修改必须重新设Expires
/// 使用:当只设Path而不设Domain时:SetCookieObj_Value("***","****",****,"","****");
/// </summary>
/// <param name="strCookieName">COOKIE对象名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示10年有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)</param>
/// <param name="strValue">COOKIE对象Value值</param>
/// <param name="strDomain">COOKIE对象作用域</param>
/// <param name="strPath">COOKIE对象作用路径</param>
function SetCookieObj_Value(strCookieName,strValue,iExpires,strDomain,strPath)
{ //***************************部署修改************************************
if(strCookieName == "" || strCookieName == null) ////////////////////////////////////////////////////////////////
{ ////////////////////////////////////////////////////////////////
alert("“strCookieName”不可为空"); ////////////////////////////////////////////////////////////////
} ////////
if(strValue == null) //////// 这一部分,
{ //////// 当系统部署时可以去掉
alert("“strValue”不可为空"); ////////
} //////// 因为其作用只是在开发过程中进行报错
if(iExpires == "" || iExpires == null) ////////
{ ////////////////////////////////////////////////////////////////
alert("“iExpires”不可为空"); ////////////////////////////////////////////////////////////////
} ////////////////////////////////////////////////////////////////
document.cookie = strCookieName.Trim() + "=" + encodeURIComponent(strValue.Trim()) + CookieExpires(iExpires) + CookieDomain(strDomain) + CookiePath(strPath);
}
/// 创建COOKIE对象并赋Value值(仅用于KEY修改操作时用,因为没有进行编码)
/// <summary>
/// 创建COOKIE对象并赋Value值(仅用于KEY修改操作时用,因为没有进行编码)
/// 使用:当只设Path而不设Domain时:SetCookieObj_Edit("***","****",****,"","****");
/// </summary>
/// <param name="strCookieName">COOKIE对象名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示10年有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)</param>
/// <param name="strValue">COOKIE对象Value值</param>
/// <param name="strDomain">COOKIE对象作用域</param>
/// <param name="strPath">COOKIE对象作用路径</param>
function SetCookieObj_Edit(strCookieName,strValue,iExpires,strDomain,strPath)
{ //***************************部署修改************************************
if(strCookieName == "" || strCookieName == null) ////////////////////////////////////////////////////////////////
{ ////////////////////////////////////////////////////////////////
alert("“strCookieName”不可为空"); ////////////////////////////////////////////////////////////////
} ////////
if(strValue == null) //////// 这一部分,
{ //////// 当系统部署时可以去掉
alert("“strValue”不可为空"); ////////
} //////// 因为其作用只是在开发过程中进行报错
if(iExpires == "" || iExpires == null) ////////
{ ////////////////////////////////////////////////////////////////
alert("“iExpires”不可为空"); ////////////////////////////////////////////////////////////////
} ////////////////////////////////////////////////////////////////
document.cookie = strCookieName.Trim() + "=" + strValue + CookieExpires(iExpires) + CookieDomain(strDomain) + CookiePath(strPath);
}
/// 创建COOKIE对象并赋多个KEY键值
/// <summary>
/// 创建COOKIE对象并赋多个KEY键值
/// 1、使用:当只设Path而不设Domain时:SetCookieObj_Key("***","****",****,"","****");
/// 2、设键/值如下:
/// var user = new Array();
/// user[0]={keyName:"lwx",keyValue:"2008"};
/// user[1]={keyName:"lwx11",keyValue:"2009"};
/// 访问:user[0].keyName=lwx user[0].keyValue=2008
/// 访问:user[1].keyName=lwx11 user[1].keyValue=2009
/// </summary>
/// <param name="strCookieName">COOKIE对象名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示10年有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)</param>
/// <param name="KeyValue">键/值对集合</param>
/// <param name="strDomain">COOKIE对象作用域</param>
/// <param name="strPath">COOKIE对象作用路径</param>
function SetCookieObj_Key(strCookieName,KeyValue,iExpires,strDomain,strPath)
{ //***************************部署修改************************************
if(strCookieName == "" || strCookieName == null) ////////////////////////////////////////////////////////////////
{ ////////////////////////////////////////////////////////////////
alert("“strCookieName”不可为空"); ////////////////////////////////////////////////////////////////
return; ////////////////////////////////////////////
} ////////////////////////////////////////////////////////////////
for(var i=0;i < KeyValue.length;i++) ////////////////////////////////////////////////////////////////
{ ////////////////////////////////////////////////////////////////
if(KeyValue[i].keyName =="" || KeyValue[i].keyName == null) ////////
{ ////////
alert("“keyName”不可为空"); ////////
return; //////// 这一部分,
} //////// 当系统部署时可以去掉
if(KeyValue[i].keyValue == null) //////// 因为其作用只是在开发过程中进行报错
{ ////////
alert("“KeyValue”不可为空"); ////////
return; ////////
} ////////////////////////////////////////////////////////////////
} ////////////////////////////////////////////////////////////////
if(iExpires == "" || iExpires == null) ////////////////////////////////////////////////////////////////
{ ////////////////////////////////////////////////////////////////
alert("“iExpires”不可为空"); ////////////////////////////////////////////////////////////////
return; ////////////////////////////////////////////////////////////////
} ////////////////////////////////////////////////////////////////
var strValue="";
for(var i=0;i < KeyValue.length;i++)
{
var keyName=KeyValue[i].keyName.Trim();
var keyValue=encodeURIComponent(KeyValue[i].keyValue.Trim());
strValue += keyName;
strValue += "=";
strValue += keyValue;
if(i==KeyValue.length-1)
{
break;
}
strValue += "&";
}
document.cookie = strCookieName.Trim() + "=" + strValue + CookieExpires(iExpires) + CookieDomain(strDomain) + CookiePath(strPath);
}
/// 读取Cookie某个对象的Value值
/// <summary>
/// 读取Cookie某个对象的Value值
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <returns>Value值,如果对象本就不存在,则返回字符串"CookieNonexistence"</returns>
function GetCookieObjValue(strCookieName)
{
var strAllCookies=document.cookie; //获取所有Cookie对象,以字符串形式返回(如:objName1=objCo1;objName2=objCo2;objName3=keyName1=keyValue1&keyName2=keyValue2)
var arrayCookies=strAllCookies.split(';'); //分离Cookie对象,返回Cookie对象数组,cookie对象间是以;分隔
for(var i=0;i<arrayCookies.length;i++) //读取各个Cookie对象
{
var cookieObj=arrayCookies[i].Trim(); //第i个cookie对象
var iStartPos = cookieObj.indexOf(strCookieName+"=");
if(iStartPos == 0)
{
var strObjValue = cookieObj.replace(strCookieName+"=","");
var iIsEqualSign = strObjValue.indexOf("=");
if(iIsEqualSign == -1)
{
return decodeURIComponent(strObjValue);
}
else
{
return strObjValue;
}
}
var iIsEqualSign = cookieObj.indexOf("=");
if(iIsEqualSign == -1) //说明Cookie的Value值为空
{
return "";
}
}
return "CookieNonexistence";
}
/// 读取Cookie某个对象的某个Key键的键值
/// <summary>
/// 读取Cookie某个对象的某个Key键的键值
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <param name="strKeyName">Key键名</param>
/// <returns>Key键值,如果对象本就不存在,则返回字符串"CookieNonexistence",如果Key键不存在,则返回字符串"KeyNonexistence"</returns>
function GetCookieKeyValue(strCookieName,strKeyName)
{
var strValue = GetCookieObjValue(strCookieName).Trim();
if(strValue=="CookieNonexistence")
{
return "CookieNonexistence";
}
var arrayKey=strValue.split('&');
for(var j=0;j<arrayKey.length;j++)
{
var arrayKeyAndValue=arrayKey[j].split('='); //得到某个键名与键值组成的只有两个元素的数组
if(strKeyName==arrayKeyAndValue[0])
{
return decodeURIComponent(arrayKeyAndValue[1]);
}
}
return "KeyNonexistence";
}
/// 修改某个COOKIE对象某个Key键的键值 或 给某个COOKIE对象添加Key键 都调用本方法
/// <summary>
/// 修改某个COOKIE对象某个Key键的键值 或 给某个COOKIE对象添加Key键 都调用本方法
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <param name="strKeyName">Key键名</param>
/// <param name="strKeyValue">Key键值</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示永久有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)。注意:虽是修改功能,实则重建覆盖,所以时间也要重设,因为没办法获得旧的有效期</param>
/// <returns>如果对象本就不存在,则返回字符串"CookieNonexistence",如果操作成功返回字符串"success"。</returns>
function EditCookieKey(strCookieName,strKeyName,strKeyValue,iExpires)
{
var strOldKeyValue = GetCookieKeyValue(strCookieName,strKeyName);
if(strOldKeyValue=="CookieNonexistence")
{
return "CookieNonexistence";
}
if(strOldKeyValue=="KeyNonexistence") //找不到键,以下直接添加键/值对
{
var strObjValue = GetCookieObjValue(strCookieName);
if(strObjValue == "") //对象的值都为空了,那么键就不用加“&”
{
strObjValue += strKeyName+"=";
strObjValue += encodeURIComponent(strKeyValue.Trim());
}
else
{
strObjValue += "&"+strKeyName+"=";
strObjValue += encodeURIComponent(strKeyValue.Trim());
}
SetCookieObj_Edit(strCookieName,strObjValue,iExpires); //这里会出现一种情况,就是strObjValue本身只是简单字符串,那么加了键/值对,结果的strObjValue就不是纯字符串,也不是纯键值对,而是二者并存,我们在使用中要尽量避免这种情况的产生。
return "success";
}
else //找到键,以下进行修改键/值对
{
var strOldKeyValue = GetCookieKeyValue(strCookieName,strKeyName);
var strOldKeyString = strKeyName +"="+encodeURIComponent(strOldKeyValue);
var strNewKeyString = strKeyName +"="+encodeURIComponent(strKeyValue.Trim());
var strObjValue = GetCookieObjValue(strCookieName);
var strObjNewValue = strObjValue.replace(strOldKeyString,strNewKeyString);
SetCookieObj_Edit(strCookieName,strObjNewValue,iExpires);
return "success";
}
}
/// 删除COOKIE对象
/// <summary>
/// 删除COOKIE对象
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
function DelCookie(strCookieName)
{
var strObjValue = GetCookieObjValue(strCookieName);
if(strObjValue=="CookieNonexistence")
{
return;
}
SetCookieObj_Value(strCookieName,"",-1);
}
/// 删除某个COOKIE对象某个Key子键
/// <summary>
/// 删除某个COOKIE对象某个Key子键
/// </summary>
/// <param name="strCookieName">Cookie对象名称</param>
/// <param name="strKeyName">Key键名</param>
/// <param name="iExpires">COOKIE对象有效时间(秒数),1表示永久有效,0表示不设有效时间,负数表示删除Cookie对象,大于等于2表示具体有效秒数,31536000秒=1年=(60*60*24*365)。注意:虽是删除功能,但只是删除某键,整个Cookie对象实则重建覆盖,所以时间也要重设,因为没办法获得旧的有效期</param>
/// <returns>如果对象本就不存在,则返回字符串"CookieNonexistence",找不到KEY键盘,返回"KeyNonexistence",如果操作成功返回字符串"success"。</returns>
function DelCookieKey(strCookieName,strKeyName,iExpires)
{
var strOldKeyValue = GetCookieKeyValue(strCookieName,strKeyName);
if(strOldKeyValue=="CookieNonexistence")
{
return "CookieNonexistence";
}
if(strOldKeyValue=="KeyNonexistence") //找不到键
{
return "KeyNonexistence";
}
else //找到键,以下进行修改键/值对
{
var strKeyValue = GetCookieKeyValue(strCookieName,strKeyName);
var strKeyString = strKeyName +"="+encodeURIComponent(strKeyValue);
var strObjNewValue ="";
var strObjValue = GetCookieObjValue(strCookieName);
var iIsOneKey = strObjValue.indexOf("&"+strKeyString);
if(iIsOneKey == -1) //说明是第一个键
{
strObjNewValue = strObjValue.replace(strKeyString+"&",""); //后面还有键时,但也有可能后面没有键,那这句话就删除不掉了
strObjNewValue = strObjNewValue.replace(strKeyString,""); //后面没有键时,多加这句话,确保成功删除
}
else
{
strObjNewValue = strObjValue.replace("&"+strKeyString,"");
}
SetCookieObj_Edit(strCookieName,strObjNewValue,iExpires);
return "success";
}
}
//====cookie操作==结束========================================================
相关文章推荐
- java文件操作工具类分享(file文件工具类)
- 项目常用Javascript分享,包含常用验证和Cookie操作
- 项目常用Javascript分享,包含常用验证和Cookie操作
- 分享一个自己利用学的IO流操作封装了一个小工具进行文件复制剪切和删除功能
- JavaScript常用工具函数(验证数据格式、清除空格、判断浏览器类型、cookie操作等)
- 项目常用Javascript分享,包含常用验证和Cookie操作
- 基于Visual C++6.0工具下的声音文件操作
- 一个C++调用lua文件操作的工具软件
- 在网上找到的javascript关于文件操作的使用方法,感觉比较全面,仅作整理使用
- javascript操作Cookie(设置、读取、删除)方法详解
- Iphone文件操作和字符串操作的工具类
- Javascript操作Cookie[3]
- Spring 的优秀工具类盘点,第 1 部分: 文件资源操作和 Web 相关工具类
- Javascript操作cookie的函数代码
- javascript操作cookie类(转)
- 基于Java多线程操作文件案例分享
- JavaScript 对Cookie 操作的封装小结
- Javascript操作文件(FSO)
- javascript 中Cookie读、写与删除操作