2010-08-09 54 views
0

我是JavaScript新手,我遇到了这些函数,我相信这些函数用于存储一个名称为“value”的cookie。我只是不明白!功能如下:有人可以解释这些JavaScript cookie功能吗?

制作饼干

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()); 
} 

检查羯羊有存储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 ""; 
} 

还有用于显示一个警告框的功能存储在cookie中的值,但我懒得写下来! (我发现它在一本书)

编辑:我决定写如果cookie存储,显示欢迎信息的最后一个函数,并显示一个提示框,如果它没有设置

是否设置?如果是这样,做“富”。如果没有,

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); 
     } 
    } 
} 
+0

你在这些方面有什么不明白的地方?你有什么困难? – Oded 2010-08-09 19:36:40

+0

你是否在寻找每个功能的逐行解释? – 2010-08-09 19:37:15

+6

我从来没有理解过为什么JavaScript没有原生的'setCookie'和'getCookie'功能,迫使人们发明十万种不同的方式来浏览'document.cookie'。这是否有很好的理由? – 2010-08-09 19:38:25

回答

2

制作饼干:

比方说,你要设置一个名为“favoriteColor”与在本周到期的价值“蓝色”的cookie。您要运行的代码是

document.cookie="favoriteColor=blue;expires=Mon, 16 Aug 2010 23:59:59 GMT"; 

您发布的函数setCookie旨在生成该行代码。它会根据您给出的日期生成日期,它将转义该值的文本,并将结果连接起来以创建document.cookie字符串。

唯一剩下的棘手问题是expiredays参数是可选的;创建document.cookie字符串的行包含一个条件,用于检查是否存在expiredays,如果expiredays不存在,则不包含字符串的“expires”部分。这使用“三元运算符”:(expiredays==null) ? "" : ";expires="+exdate.toGMTString()的意思是“如果expiredays为null,则使用空字符串,否则使用'; expires =”+ exdate.toGMTString()'“。通过搜索给定名称(后跟=)的cookie集合(这是一个单独的字符串)并将该文本从该点返回到下一个分号,从而可以从

中挑选“蓝色”

“favoriteBand = Foreigner; favoriteColor = blue; favoriteFood = sushi;”

+0

谢谢,这是非常有用的:) – Latze 2010-08-09 20:41:19

2

文档的cookie存储在cookie的长字符串“栏”。这些函数解析出单独的cookie值。请参阅this page了解字符串结构的解释。

1

您可能会想要read a little bit了解什么是cookies以及它们是如何工作的。

在cookie中您有name:value对实际数据和一些元数据,例如cookie过期日期。

相关问题