1 час Cookie для проверки возраста всплывающее окно - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть всплывающее окно подтверждения возраста, которое устанавливает cookie, чтобы запомнить действия пользователя в течение определенного периода времени. Я сделал это после следующего поста здесь при переполнении стека, но у меня есть некоторые сомнения.

CSS

#popup {
  z-index: 1000;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  position: fixed;
  display: none;
  background-color: rgba(0, 0, 0, 0.8);
}

JS использует Cookies (не работает)

$(function() {

  //Check it the user has been accpeted the agreement
  if (!(document.cookie && document.cookie == "accepted")) {
    $("#popup").show();
  }

  $('[data-popup-close]').on('click', function(e) {
    var targeted_popup_class = jQuery(this).attr('data-popup-close');
    $('[data-popup="' + targeted_popup_class + '"]').fadeOut(350);

    //Set a cookie to remember the state
    document.cookie = "accepted";

    e.preventDefault();
  });

});

JS с использованием локального хранилища

$(function() {

  //Check it the user has been accpeted the agreement
  if (!localStorage.getItem('accepted')) {
    $("#popup").show();
  }

  $('[data-popup-close]').on('click', function(e) {
    var targeted_popup_class = jQuery(this).attr('data-popup-close');
    $('[data-popup="' + targeted_popup_class + '"]').fadeOut(350);

    //Set a cookie to remember the state
    localStorage.setItem('accepted', true);

    e.preventDefault();
  });
});

Мой первый вопрос: почему использование файлов cookie не работает?

И второе: я хотел бы получить печенье на определенный период времени, как указано выше. Теперь с помощью метода localStorage просто покажите всплывающее окно один раз, и если я приму и обновлю страницу, всплывающее окно больше не будет отображаться, но я думаю, что оно не будет отображаться вечно. Я попытался использовать это внутри функции, чтобы контролировать, как долго будет активен файл cookie.

$.cookie('accepted','yes', {expires: 7, path: '/'});

Полагаю, что «7» означает 7 дней, но если поставить «0», то это тоже самое. Можно ли просто получить печенье на один час, чтобы посмотреть, работает ли оно правильно?

Как обычно, большое спасибо за вашу помощь.

Br

1 Ответ

0 голосов
/ 07 ноября 2018

Дни - это просто число, умноженное на секунды в плагине. Если вы хотите, чтобы куки сохранялись в течение 1 часа, вы можете попробовать

$.cookie('accepted','yes', {expires: 1/24, path: '/'});

Вы можете попробовать следующий код

$(function() {

  //Check it the user has been accepted the agreement
  if (!$.cookie('accepted')) {
    $("#popup").show();
  }

  $('[data-popup-close]').on('click', function(e) {
    var targeted_popup_class = $(this).attr('data-popup-close');
    $('[data-popup="' + targeted_popup_class + '"]').fadeOut(350);

    //Set a cookie to remember the state
    $.cookie('accepted','yes', {expires: 1/24, path: '/'});
    e.preventDefault();
  });

});
...