Javascript如何操作(创建/读取/删除)cookie

曲奇(小甜点),来源于英语COOKIE。

cookie这个词想必很多做前段的朋友都接触过,但是没有详细的了解以及操作过。如何的确如此,那么就停下来了解一下如何通过JS来操作cookie值吧!

通过本文你将粗略的明白cookie是什么,如何通过js创建/存储以及获取cookie,如何让cookie过期来删除cookie...

什么是cookie?

cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。

来自w3school的解释

某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。

MSIE的帮助信息

不同的浏览器针对cookie操作的方式不一样(比如ie是生成一个文本)。通俗一点的说,cookie就是比html高级一点的程序创建的,保存在客户端(就是你的电脑)来记录用户的一些信息的东西。

Cookie的结构:

每个cookie的结构都是这样的 cookie的名字=cookie的值 cookie的名字与值的命名方面同js的命名规则差不多,只不过多了“只能用可以用在url编码中的字符”,即如果保存汉字的话,需要用escape()编码,然后读取的时候用unescape()解码;

每个cookie都有过期时间,当电脑的时间过了给定的过期时间,这个cookie就会失效。js无法直接删除cookie值,但是可以通过设置失效日期来让此cookie无法工作。

如何创建/保存cookie:

创建cookie的方法,用到的是documents.cookie属性;给cookie赋值的方法如下:

documents.cookie = 'cookieName=' + escape('cookieValue')+ ';expires=' + expirationDateObj.toGMTString();

看到这些是否有些麻木呢?其实说明一下很简单,cookieName是你的cookie的名字,比如“niumowang_cookie”;cookieValue是你的cookie的值,比如“牛魔王的世界观”;expirationDateObj 是保存过期时间的对象名,toGMTString()是将时间设置成GMT(格林尼治时间),cookie只支持此时间格式。如果这里不设置时间的话,默认是浏览器关闭窗口cookie过期。

OK,我们来看一个保存用户名字的cookie示例,我们设置一个 “name”=“pizi”的cookie,并在2个月过期

function setCookie(){
var expires = new Date();
expires.setTime(expires.getTime() + 2 * 30 * 24 * 60 * 60 * 1000);
/* 2个月 x  30 天 x  24 小时 x  60 分 x 60 秒 x  1000 毫秒 */
documents.cookie = 'name=pizi;expires=' + expires.toGMTString();
}

上面的pizi没有用escape编码是因为,escape编码后的结果就是escape

js 如何读取cookie:

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  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
    return unescape(document.cookie.substring(c_start,c_end))
    }
  }
return ""
}
上面的函数首先会检查 document.cookie 对象中是否存有 cookie。假如 document.cookie 对象存有某些 cookie,那么会继续检查我们指定的 cookie 是否已储存。如果找到了我们要的 cookie,就返回值,否则返回空字符串。

js如何删除cookie:

function delCookie (NameOfCookie)
{
// 检查cookie是否设置,如果设置了则将过期时间调到过去的时间;
//Thu, 01-Jan-70 00:00:01 GMT,该时间为1970年1月1号
if (getCookie(NameOfCookie)) {
document.cookie = NameOfCookie + "=" +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}

上面函数检测是否设置了名字为 NameOfCookie的cookie,如果设置的话将该cookie的失效日期调到1970年1月1号,这样该cookie就会失效,剩下的就是浏览器处理过期cookie的机制了。关于该时间,可以参考:关于1970-1-1 00:00:0000的知识

js操作cookie教程与实例:

w3school有一些关于js操作cookie的教程,并附带一个欢迎cookie的示例,有兴趣的朋友去看下,地址:http://www.w3school.com.cn/js/js_cookies.asp

下面是js操作cookie的示例演示:运行代码会提示输入用户名,然后关闭打开的窗口再运行一次代码会看到效果。或者另存为html文件查看演示

<html>
<head>
<script type="text/javascript">
function getCookie(c_name)
{
if (document.cookie.length>0)
{
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
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}

function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}

function checkCookie()
{
username=getCookie('username')
if (username!=null && username!="")
{alert('Welcome again '+username+'!')}
else
{
username=prompt('Please enter your name:',"")
if (username!=null && username!="")
{
setCookie('username',username,365)
}
}
}
</script>
</head>

<body onLoad="checkCookie()">
</body>
</html>

 

posted @ 2014-05-05 21:29  ooxiaofangoo  阅读(244)  评论(0编辑  收藏  举报