[英]Anyone can explain to me document.cookie
我在w3schoool JavaScript cookie部分找到了这段代码,这是读取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 "";
}
在这一行:
if (document.cookie.length > 0)
document.cookie.length
意思是什么?
在这一行:
c_start = document.cookie.indexOf(c_name + "=");
为什么我需要在c_name(cookie name)
之后添加=
?
在这一行:
c_start = c_start + c_name.length+1;
为什么我需要添加c_name.length+1
? 目的是什么?
这条线的含义是什么:
if (c_end==-1) c_end = document.cookie.length;
有人可以回答我的问题吗? 谢谢!!!
document.cookie
返回包含cookie的字符串。 你问的其他一切都是非常标准的javascript字符串操作。
if (document.cookie.length > 0)
检查字符串是否为空。
c_start = document.cookie.indexOf(c_name + "=");
查找字符串中第一次出现COOKIENAME=
substring的索引。
c_start = c_start + c_name.length + 1;
将索引放在字符串中的cookie名称之后
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) c_end = document.cookie.length;
试图找到第一次出现的;
从c_start
位置开始的c_start
,如果找不到该字符,则它将位于字符串的末尾。
请参阅: https : //developer.mozilla.org/en/DOM/document.cookie
document.cookie是一个字符串,其中key = value对由分号(;)分隔。
您粘贴的代码在字符串中查找特定键,然后通过查找字符串的结尾或下一个分号查找其值,并返回它找到的值
例如,如果document.cookie ===“someKey = aCookieMadeMeHaveValue7; anotherKey = aShorterValue”,则可以通过执行函数getCookie('someKey')搜索someKey的值,该函数将查看字符串,并返回' aCookieMadeMeHaveValue7' 。
它将向该位置添加+1以跳过'=',然后从那里返回字符串,直到它第一次看到';' 或者到了字符串的末尾。
好的,快速回答。 首先, document.cookie
是一个字符串,包含此域上每个cookie集的key=value
对。
(1) if (document.cookie.length>0)
检查是否设置了一些cookie,即该字符串不为空。
(2) c_start=document.cookie.indexOf(c_name + "=");
需要使用=
来确保c_name
不会出现在cookie的值内,而只发生在键中。
(3) c_start=c_start + c_name.length+1;
c_start
是在字符串中找到键的位置。 然后,您需要添加键的长度加一(对于=
)以查找值的开头。
(4) if (c_end==-1) c_end=document.cookie.length;
如果cookie是最后一个,则不会终止;
,所以我们寻找字符串的最后一部分。
document.cookie
是一个字符串, length
属性用字符表示字符串的长度。
=
附加到cookie名称,因为cookie名称也可能出现在document.cookie
字符串的其他位置(如另一个cookie的cookie值)。 使用c_name.length+1
是因为+1
反映了cookie名称后面的=
。 如果在大海捞针中找不到针, indexOf
返回-1
; 这就是为什么将c_end
与-1
进行比较的原因。
但是你不应该使用这个实现。 看看我对Javascript getCookie函数的回答,看看为什么它是错误的,以及更好的实现如何。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.