Проверить куки при загрузке страницы и обновить при нажатии кнопки - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь проверить, установлен ли файл cookie при загрузке страницы (cookieVal = 0). Если нет, я хочу показать модальный Bootstrap 4, который содержит две кнопки.

Если пользователь нажимает кнопку «Принять» («cookiesAccept»), тогда я хочу установить cookieVal = 1, закрыть модальный режим и показать alert со значением cookie. Обратите внимание, что предупреждение предназначено только для тестирования.

Модал и кнопки работают нормально, и я могу показать их при загрузке страницы, но у меня возникают проблемы, как только я добавляю логику cookie, которая в настоящее время не позволяет мне нажимать кнопку Принять и закрытьпокадрово.

Может кто-нибудь сказать мне, что я должен добавить или изменить здесь?

Это мой JS, который включен в заголовок каждой страницы:

$(document).ready(function() {
  checkCookie();

  $('#cookiesAccept').click(function() {
    setCookie("privacy", 1, 0);
    $('.modal').modal('hide');
    alert("Cookie set to " + privacy);
  });
});

function setCookie(cookie, cookieVal, expiry) {
  var d = new Date();
  d.setTime(d.getTime() + (expiry * 24 * 60 * 60 * 1000));
  var expires = "expires=" + d.toUTCString();
  document.cookie = cookieName + "=" + cookieVal + ";" + expires + ";path=/";
}

function getCookie(cookieName) {
  var name = cookieName + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for (var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function checkCookie() {
  var privacy = getCookie("privacy");
  if (privacy != 0) {
    alert("Cookie set to " + privacy);
  } else {
    // show cookie modal
    $('.modal').modal('show');
  }
}

Заранее большое спасибо

1 Ответ

0 голосов
/ 02 октября 2019

Срок действия файла cookie истекает немедленно, так как вы указываете значение 0 в качестве значения срока действия для функции setCookie в обработчике кликов.

d.setTime(d.getTime() + (expiry * 24 * 60 * 60 * 1000));

Это означает текущее время + (0 * 24 * 60 * 60 * 1000).

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