cookie可以通过js获取吗,cookie 操作
本教程运行环境:windows7系统,javascript1.8.5版本1.8.5,戴尔G3电脑。
Cookies是存储在访客电脑中的变量。当用户访问一个网站时,他们可以通过cookies在访问者的电脑上存储数据。稍后,当用户在同一台计算机上通过浏览器再次请求该页面时,将发送此cookie,因此cookie可用于识别用户。
1. 设置cookie
cookie通过设置cookie来存储数据。每个cookie都是一个名称/值对。名称/值对由等号连接,名称/值对分配给document.cookie。您可以一次为document.cookie分配多个名称/值对,并用分号和空格分隔每个名称/值对。
设置cookie的基本格式如下:
document . cookie= Name 1=Value 1[;2=值2;…];设置cookie的示例如下:
document . cookie= username=ABC ;
document.cookie= age=23
document.cookie= username=abc年龄=23’;请注意,分号不能用在cookie的名称或值中;和等号=。如果要存储这些符号,需要使用escape()函数对它们进行编码。例如:document . cookie= str= escape( username=nch ),相当于:document . cookie= str=username=nch ,即等号编码为=在使用escape()编码时,需要在取值后使用unescape()解码得到原始的cookie值。
此外,当以上述格式设置的cookie中的值存储在用户的电脑中时,不同网站的数据以网站域名的形式进行区分,不同浏览器中存储cookie的位置不同,因此不同浏览器中存储的cookie无法相互访问。另外,同一域名下存储的cookie数量是有限的,不同的浏览器对存储的cookie数量有不同的限制。而且每个cookie的内容大小是有限制的,不同浏览器的大小限制也不一样。
2. 修改cookie值
如果你想改变一个cookie值,只需重新赋值即可,例如:document.cookie= age=36这样,可以修改之前设置的age=23的cookie值。
3. 获取cookie
当你通过document.cookie获取当前网站下的cookie时,得到的是一个字符串形式的值,它包含了当前网站下的所有cookie。它以分号空格的形式连接所有cookie。
要获得不同的cookie值,可以使用split()方法将包含分号和空格的字符串分隔成一个字符串数组,然后遍历该字符串数组以获得每个名称/值对。使用split()方法将名称/值对分离到一个再次包含名称和值的数组中,就可以得到指定cookie名称的值。
例如,获取名为age的cookie值的代码如下:
document.cookie= username=abc年龄=23’;
var arr 1=document . cookie . split(;);
for(var I=0;i arr1 .长度;i ){
var arr2=arr1[i]。拆分(=);
if(arr2[0]==age){
alert(arr 2[1]);
}
}4. 设置cookie的有效时间
cookies默认是临时存储的,也就是默认存在内存中,不存储在硬盘中,所以浏览器进程关闭后会自动销毁存储的cookies。如果您想将cookie保存在您的计算机中一段时间或永久保存,您需要在设置cookie时设置一个有效的时间。设置格式如下:
Document.cookie= name=value字符串格式的Expires= time例如:
var OTA=new Date();
OTA . set date(OTA . getdate()10);//在访问页面10天后过期
//设置cookie的有效时间,时间为字符串格式。
document.cookie= username=abcexpires= otate . togmtstring();5. 删除cookie
只需将直接cookie的有效时间设置为过去的某个时间。例如:
var OTA=new Date();
OTA . set date(OTA . getdate()-1);//访问页面的前一天
document.cookie= username=abcexpires= otate . togmtstring();[例1]使用文档操作cookie。
!声明文档类型
超文本标记语言
头
meta charset=utf-8
使用cookie来记住登录用户名/头衔。
脚本
window.onload=function(){
var oUsername=document . getelementbyid( username );
var olog in=document . getelementbyid( log in );
var oDel=document . getelementbyid( del );
//确定用户是否曾经登录过。
if(get cookie( username ){
ousername . value=get cookie( username );
}
//定义一个函数来获取指定名称的cookie值:
函数getCookie(key){
var arr 1=document . cookie . split(;);
for(var I=0;i arr1 .长度;i ){
var arr2=arr1[i]。拆分(=);
if(arr2[0]==key){
返回unescape(arr 2[1]);//解码编码内容。
}
}
}
//定义一个函数来设置cookie,同时设置cookie的有效时间
函数setCookie(key,value,t){
var OTA=new Date();
OTA . set date(OTA . getdate()t);
//使用escape()对内容进行编码
document . cookie=key = escape(value);expires= otate . togmtstring();
}
//定义一个函数来删除cookie
函数removeCookie(key){
setCookie(key,,-1);
}
oLogin.onclick=function(){
Alert(“登录成功”);
//将输入的用户名存储在一个cookie中,cookie会在登录5天后过期。
setCookie(用户名,oUsername.value,5);
}
oDel.onclick=function(){
removeCookie(“用户名”);
ousername . value=“”;//删除cookie后清空文本框的内容
}
};
/脚本
/头
身体
输入类型=text id=username/
type= button value= log in id= log in /
Type= button value=删除用户名cookie id=del/
/body
/html注意:Firefox和IE只允许在本地临时操作cookies。关闭浏览器后无法获取Cookies。Chrome不允许cookie在本地操作。当示例1发布在Web服务器上,然后被访问时,这些浏览器可以操作cookie。
下图是在Chrome浏览器中访问并发布到Tomcat Web server后,点击登录按钮和删除按钮的结果(Tomcat server是本地的,所以可以用localhost作为域名来访问)。
输入用户名后,点击登录按钮,在点击删除用户名cookie按钮前关闭Chrome浏览器进程,然后再次打开Chrome access示例1。可以得到如图3所示的结果,即用户名会自动显示在文本框中。如果您单击删除用户名cookie按钮,关闭Chrome浏览器进程,然后再次打开Chrome Access Example 1,您将获得如图4所示的结果。此时,存储在cookie中的用户名已被删除,因此无法在文本框中显示。
【推荐学习:javascript高级教程】以上是javascript如何实现cookie操作的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。