Понимание того, как разбивается строка Cook ie - PullRequest
0 голосов
/ 17 апреля 2020

У меня на сайте есть javascript cook ie, и я обнаружил код, который определяет, был ли размещен CookieConsent = true cook ie после нажатия на баннер cook ie, чтобы принять куки .

Я наткнулся на код ниже, который проверяет, действительно ли согласие Cook ie равно true, и, судя по всему, проверяет, есть ли текст после CookieConsent= часть повара ie строка?

Я понятия не имею, как это работает, хотя.

Биты, которые я понимаю, таковы:

  • метод split () разбивает строку cook ie и отделяет 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');
}

1 Ответ

1 голос
/ 17 апреля 2020

Функция filter() возвращает массив всех элементов исходного массива, которые соответствуют условию. В этом случае исходный массив - это тот, который получается в результате разбиения document.cookie в ; разделителей.

item.trim().indexOf('CookieConsent=') возвращает позицию строки CookieConsent=.

== 0 проверяет, является ли эта позиция 0, поэтому она проверяет, начинается ли строка с CookieConsent=.

Таким образом, вызов filter() возвращает массив всех файлов cookie, которые начинаются с CookieConsent= .

.length возвращает длину этого отфильтрованного массива. Это будет 0, если такие куки не найдены, и ненулевые, если они были.

Любое ненулевое число является верным, поэтому условие if будет выполнено, если CookieConsent cook ie был найден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...