我正在学习用JavaScript创建cookie,我在理解最后3行代码的工作时遇到了问题。我知道这个问题不适合Stackoverflow Standand,但如果有人解释,我将不胜感激。
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : ";
expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
答案 0 :(得分:4)
如果exdays不为null,即它作为参数给出(在JavaScript中,函数可以使用任意数量的参数),使用三元检查(if / else简写)它会追加字符串“expires = ...”到cookie字符串。否则,没有过期字符串(它将是会话cookie)。
最后,修改了document.cookie。有关cookie和通过JS更改的更多信息,请参阅www.quirksmode.org/js/cookies.html
基本上,要使用JS添加新cookie,请设置document.cookie =“key = value”。其他cookie不会被覆盖,只需附加新的cookie。
要删除其他Cookie,需要设置过去的过期日期,浏览器会将其清除。
如果你只是打印document.cookie,你会看到所有的cookie(技术上并非全部,只有http-only cookies等),但是没有办法从JavaScript学习它们的到期日期。
答案 1 :(得分:0)
ustun说得好,如果您了解编写和检索cookie的一般格式,那么您可以成为其中的主人。它就像处理字符串和数组一样简单。
Cookie是存储小尺寸不常用内容的非常有用的组件。通常,它用于将少量数据(如当前用户名,或用户唯一ID& so)从一个页面传输到另一个页面,或者与服务器进行通信以进行特定操作。
设置Cookie
设置cookie通常很容易。它只需要三个部分的定义。它们是,
document.cookie = "name = test ; expires = date ; path =/"
var myCookie = document.cookie.split(';');
for(var i=0;i < myCookie.length;i++) {
var cookieValue = myCookie[i];
var pair = myCookie[i].split('=');var key = pair[0];var value= pair[1];
}
限制即使使用起来非常方便,但它们并不是一种正常的沟通或机制。请注意,Web浏览器不需要总共保存300多个cookie,每个Web服务器不超过20个cookie(对于整个服务器,不仅仅是服务器上的页面或站点),也不需要保留超过4 KB的数据每个cookie(名称和值都计入此4千字节限制)。其中最大的限制是每个服务器限制20个cookie,因此为每个必须保存的变量使用不同的cookie不是一个好主意。而是保存包含大量信息的单个cookie。