有人可以解释这些JavaScript cookie函数吗?

时间:2010-08-09 19:28:11

标签: javascript cookies

我是javascript的新手,我遇到过这些函数,我相信这些函数用于存储带有名称的cookie(名称为'value')。我只是不明白!功能如下:

制作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),如果未设置则显示提示框

是否已设定?如果是这样,请“foo”。如果没有,请执行“bar”

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

3 个答案:

答案 0 :(得分:2)

文档的cookie存储在一个长cookie字符串中。这些函数解析出单独的cookie值。有关字符串结构的说明,请参阅this page

答案 1 :(得分:2)

制作cookie:

假设你要设置一个名为“favoriteColor”的cookie,其值为“blue”,在一周内到期。您要运行的代码是

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集合(单个字符串)来查找Cookie,并将该文本从该点返回到下一个分号。所以它可以从

中选择“蓝色”

“favoriteBand =外国人; favoriteColor =蓝; favoriteFood =寿司;”。

答案 2 :(得分:1)

您可能希望read a little bit了解哪些Cookie以及它们的工作原理。

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