/*
关于Cookie:
Cookie可以设置6个部分:name(名称)、value(值)、expires(过期时间)、path(路径)、domain(域)、secure(安全性)
前两个是必须的,后4个是可选的
名称和值:
它们必须位于Cookie字符串的开头
实例:
document.cookie="UserName=Paul";
则Cookie的名称是UserName,值是Paul
过期时间:
若没有设置过期时间,则在关闭页面之后,Cookie就失效
过期时间的格式十分重要,特别是对于IE浏览器,它应该与toGMTString()方法返回的格式相同
实例:
document.cookie="UserName=Paul;expires=Tue, 28 Dec 2020 00:00:00 GMT;";
或者
var expireDate=new Date();
expireDate.setMonth(expireDate.getMonth()+6);
document.cookie="UserName=Paul;expires="+ expireDate.toGMTString()+";";
*/
//CookieFunction.js
function setCookie(cookieName,cookieValue,cookiePath,cookieExpires)
{
cookieValue = escape(cookieValue);
//由于cookie中是以;来区别几个数据的,所以在cookie内容的不能直接添加;字符的
//为了解决这个问题,使用escape()函数,将这种
特殊字符转变成:%+十六进制的ASCII 类型的值
//比如:空格变为:%20 分号;变为:%3B
//与之对应的,解码使用:unescape()函数
if(cookieExpires=="")
{
var nowDate=new Date();
nowDate.setMonth(nowDate.getMonth()+6);//默认添加六个月的有效期
cookieExpires=nowDate.toGMTString();//转变成合适的时间格式
}
if(cookiePath!="")cookiePath=";Path="+cookiePath;
document.cookie=cookieName+"="+cookieValue+";expires="+ cookieExpires + cookiePath;
}
function getCookieValue(cookieName)
{
var cookieValue=document.cookie;//提取cookie字符串
var cookieStartsAt=cookieValue.indexOf(" "+cookieName+"=");//若找不到返回-1,找到返回位置
//这里查找" "+cookieName+"=",以免在无意间查找包含所需名称的Cookie名称或值
//例如,假如cookie名称为:xFoo、Foo、yFoo,则查找前面不包含空格的Foo,会优先匹配xFoo
if(cookieStartsAt==-1)cookieStartsAt=cookieValue.indexOf(cookieName+"=");
//若是-1,则代表该cookie不存在,或者该cookie位于Cookie字符串的开头,这时Cookie名称前也不包含空格,需要重新进行一次查找
if(cookieStartsAt==-1)cookieValue=null;
else
{
cookieStartsAt=cookieValue.indexOf("=",cookieStartsAt)+1;//Cookie值的起始部分是在=号之后
var cookieEndsAt=cookieValue.indexOf(";",cookieStartsAt);//一般是在;处结束
if(cookieEndsAt==-1)cookieEndsAt=cookieValue.length;//若Cookie中只有名称和值时,值就位于字符串最后,没有了;间隔,所以直接用
字符串长度
cookieValue=unescape(cookieValue.substring(cookieStartsAt,cookieEndsAt));
}
return cookieValue;
}