我的网站上有一个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/