gpt4 book ai didi

javascript - 有人可以解释这些 JavaScript cookie 功能吗?

转载 作者:行者123 更新时间:2023-11-28 14:03:44 26 4
gpt4 key购买 nike

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

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

最佳答案

制作cookie:

假设您想要设置一个名为“favoriteColor”、值为“blue”的 cookie,该 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 集(单个字符串)中搜索给定名称(后跟 =)并返回从该点到下一个分号的文本来查找 cookie。所以它可以从

中选择“蓝色”

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

关于javascript - 有人可以解释这些 JavaScript cookie 功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3443469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com