繁体   English   中英

任何人都可以向我解释document.cookie

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM