我的网站上有一个JavaScript cookie,并且遇到了一些代码,这些代码标识在单击cookie横幅接受cookie后是否放置了CookieConsent = true cookie。

我遇到了下面的代码,该代码检查Cookie同意是否等于true,从外观上看,它正在检查cookie字符串的CookieConsent=部分之后是否有任何文本?

我不知道这是如何工作的。

我的理解是:


split()方法拆分Cookie字符串,并将“ true”与其余字符串分开。
trim()方法删除已分割内容两侧的空白


但是此代码的.indexOf('CookieConsent=') == 0 }).length)部分如何工作。

任何解释将不胜感激。



if (document.cookie.split(';').filter(function(item) {
      return item.trim().indexOf('CookieConsent=') == 0
      }).length) {

   // prevents cookie notice showing on next visit by adding a class to hide the cookie banner
   cookieBanner.classList.add('hidden');
}

最佳答案

filter()函数返回一个数组,其中包含与条件匹配的原始数组的所有元素。在这种情况下,原始数组是在document.cookie分隔符处分割;所得的数组。

item.trim().indexOf('CookieConsent=')返回CookieConsent=字符串的位置。

== 0测试该位置是否为0,因此它测试字符串是否以CookieConsent=开头。

因此,filter()调用返回以CookieConsent=开头的所有cookie的数组。

.length返回此过滤数组的长度。如果找不到这样的cookie,它将为0;如果没有,则为非零。

任何非零数字都是真实的,因此,如果找到if cookie,则CookieConsent条件将成功。

关于javascript - 了解如何拆分Cookie字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61261614/

10-10 08:51