javascriptCookie.docx
《javascriptCookie.docx》由会员分享,可在线阅读,更多相关《javascriptCookie.docx(9页珍藏版)》请在冰豆网上搜索。
javascriptCookie
Cookie是存储在客户端中的一些信息。
同一个网站可以创建多个cookie,而多个cookie可以存放在同一个cookie文件中。
使用Document对象的cookie属性可以设置一个cookie,也可以从一个cookie文件中读取所有的cookie内容。
设置cookie方法:
Document.cookie=”name=value”
取得cookie方法:
Varcookies=document.cookie;
下面是设置和取得cookie的方法:
无标题文档functionsetcookie()
{
varuserName=myform.name.value;
varpassword=myform.password.value;
document.cookie="cookieUserName="+userName;
document.cookie="cookiePassword="+password;
}
functiongetcookie()
{
varcookiemessage=document.cookie;
alert(cookiemessage);
}
Document.cookie是取得全部的cookie,就如上面所示,把全部的cookie都拿来了。
如果要获得部分cookie,可以使用String对象的substring()方法来截取。
要获得某个指定的cookie值,就必须要获得cookie值的开始和结束部分,由于cookie值是不固定的,而cookie的名是固定的,所以可以先获得cookie名开始位置,以cookieUserName为例,就需要获得子字符串”cookieUserName=”在整个字符串的位置。
获得cookie名的开始位置之后,可以通过cookie名的开始位置加上cookie名的长度再加上1(即加上了”=”的位置)的方法来获得cookie的值的开始位置。
获得cookie值的开始位置之后,还必须知道cookie值的结束位置才可以使用string对象的substring()方法来截取cookie值。
无标题文档functionsetcookie()
{
varuserName=myform.name.value;
varpassword=myform.password.value;
document.cookie="cookieUserName="+userName;
document.cookie="cookiePassword="+password;
}
functiongetcookie(cookieName)
{
varcookiemessage=document.cookie;
varcookieValue="";
if(cookieName=="name")
{
cookieValue=returnCookieValue(cookiemessage,"cookieUserName");
alert("姓名是:
"+cookieValue);
}
if(cookieName=="password")
{
cookieValue=returnCookieValue(cookiemessage,"cookiePassword");
alert("密码是:
"+cookieValue);
}
}
functionreturnCookieValue(cookieValue,cookieName)
{
varreturncookievalue="";
varcookieNameIndex=cookieValue.indexOf(cookieName+"=");
if(cookieNameIndex!
=-1)
{
varcookieValueBeginIndex=cookieNameIndex+cookieName.length+1;
varCookieVaulueEndIndex=cookieValue.indexOf(";",cookieValueBeginIndex);
}
if(cookieNameIndex==-1)
{
cookieValueEndIndex=cookieValue.length;
}
returncookievalue=cookieValue.substring(cookieValueBeginIndex,CookieVaulueEndIndex);//截取
returnreturncookievalue;
}
我们还可以通过数组来读取cookie值
无标题文档functionsetcookie()
{
varuserName=myform.name.value;
varpassword=myform.password.value;
document.cookie="cookieUserName="+userName;
document.cookie="cookiePassword="+password;
}
functiongetcookie(cookieName)
{
varcookiemessage=document.cookie;
varcookieValue="";
if(cookieName=="name")
{
cookieValue=returnCookieValue(cookiemessage,"cookieUserName");
alert("姓名是:
"+cookieValue);
}
if(cookieName=="password")
{
cookieValue=returnCookieValue(cookiemessage,"cookiePassword");
alert("密码是:
"+cookieValue);
}
}
functionreturnCookieValue(cookieValue,cookieName)
{
varreturncookievalue="";
varcookies=cookieValue.split(";");//cookies变为了数组了
varvalue=newArray();
for(i=0;i{
vartempArr=cookies[i].split("=");//分成了两个
value[i]=tempArr;//value变为了二维数组了
}
for(vari=0;i{
if(value[i][0]==cookieName)
{
returncookievalue=value[i][1];
break;
}
}
returnreturncookievalue;
}
1.cookie的生存周期
document.cookie=”name=value;expires=date”
date的格式是:
Wdy,DD-Mon-YYHH:
MM:
SSGMT
1)Wdy:
用英文简写表示的星期
2)DD:
使用量为数字表示的日期
3)Mon:
使用英文简写的月份
4)YY:
使用两位数字表示的年份
5)HH:
使用两位数字表示的小时
6)MM:
表分钟
7)SS:
表秒
8)GMT:
说明该格式为GMT
functionsetcookie()
{
varuserName=myform.name.value;
varpassword=myform.password.value;
varexpiresdate=newDate();
expiresdate.setDate(expiresdate.getDate()+1);
document.cookie="cookieUserName="+userName+";expires="+expiresdate.toGMTString();
document.cookie="cookiePassword="+password+";expires="+expiresdate.toGMTString();
}
Cookie只能创建不能删除,如果想删除一个cookie,可以将生存期设置为一个已经过期的时间。
即使cookie已经失效,但是cookie文件不会被立即删除。
2.cookie的路径
document.cookie=”name=value;expires=datepath=path”
path就是路径。
默认情况下,只有与创建cookie的网页在同一个虚拟目录或子虚拟目录下的网页才可以范围内该cookie,假设一个cookie是由下面网页所创建:
以上网页的虚拟目录为:
/booksupport/jscode/17/
因此,在该虚拟目录和该虚拟目录的子目录下的所有文件都可以访问该cookie,如下面网页:
要想让父级能够访问,就需要设置cookie的路径。
document.cookie=”name=value;expires=datepath=/”
如上面所示,把Cookie的路径设为”/”,也就是表示只要在同一个域中,所有文件都可以访问该cookie.
3.cookie的域
使用cookie的路径只能解决不同虚拟目录下文件访问cookie的问题,但不能解决不同域下文件相互访问的问题。
要想不同域中的文件互相访问cookie,就需要设置cookie的域。
document.cookie=”name=value;expires=date;path=path;domain=domain”
domain为cookie的域,如:
domain:
4.cookie的安全性
document.cookie=”name=value;secure”
加了secure后,如果传输协议不是加密协议,就不会传输cookie
5.为cookie编码
在设置cookie值之前,应该先使用escape()函数将cookie值编码,在获得cookie值后,再使用unecape()函数将值还原。
functionsetcookie()
{
varuserName=escape(myform.name.value);
varpassword=escape(myform.password.value);
document.cookie="cookieUserName="+userName;
document.cookie="cookiePassword="+password;
}
functiongetcookie()
{
varcookiemessage=unescape(document.cookie)
alert(cookiemessage);
}