Как указать cookie для отображения на всем сайте до закрытия?

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

Я хотел бы несколько предложений по исправлению этого.

Я пробовал использовать document.cookie = 'hidecookier=1; domain=; expires=... вместо document.cookie ='hidecookie=1; path=/; expires=.... После того, как я поставил domain= вместо path=, я больше не могу закрыть div, он просто остается там до обновления страницы или до тех пор, пока не пойду в магазин и не вернусь на стартовый сайт.

$(function() {
  $('#header').trigger('onload');
});

function setCookieHeaderCounter() {
  if (document.cookie.indexOf('cookieheaderCounter=2') === -1) {
    if (document.cookie.indexOf('cookieheaderCounter=1') === -1) {
      document.cookie = 'cookieheaderCounter=1; path=/;';

    } else if (document.cookie.indexOf('cookieheaderCounter=1') !== -1) {
      document.cookie = 'cookieheaderCounter=2; path=/;';
    }
  }
}

function setCookieHeader() {
  var ablauf = new Date();
  var inXTagen = ablauf.getTime() + (24 * 60 * 60 * 1000); // 1 Tage
  ablauf.setTime(inXTagen);
  document.cookie = 'hidecookieheader=1; domain=; expires=' + ablauf.toGMTString();
}

if (document.cookie.indexOf('hidecookieheader=1') !== -1 || document.cookie.indexOf('cookieheaderCounter=2') !== -1) {
  jQuery('#header').hide();
} else {
  jQuery('#header').prependTo('meta_navi');
  jQuery('.header').show();
}
<div id="header" onload="setCookieHeaderCounter()">
  <span style="font-weight: bold;"><a class="header" href=""><b></b></a></span>
  <div class="close-btn"><span id="close" class="" onclick="setCookieHeader();jQuery('#header').slideUp" style="margin-top: -8px; float: right; color: #fff; font-size: 23px;"></span></div>
</div>

Чтобы было ясно, я хочу показать div #header на всем сайте, пока кто-нибудь не закроет его с помощью span #hinweis-close. Он может исчезнуть при обновлении, это не имеет значения.


person asobak    schedule 21.05.2019    source источник
comment
Никогда не пишите свой собственный код cookie. Найдите в Интернете хорошо используемый файл, например github.com/js-cookie/js-cookie - также, пожалуйста, не используйте встроенные обработчики событий   -  person mplungjan    schedule 21.05.2019
comment
Также нет обработчиков загрузки для div   -  person mplungjan    schedule 21.05.2019
comment
Я использую один и тот же код в нескольких местах, например, для отображения соглашения о файлах cookie, и решил, что могу использовать тот же код с небольшим обновлением для отображения на всем сайте.   -  person asobak    schedule 21.05.2019


Ответы (1)


  1. используйте https://github.com/js-cookie/js-cookie, добавив <script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/2.2.0/js.cookie.min.js"></script>

  2. Используйте этот код DEMO

$(function() {
  var closed = Cookies.get('hinweis');
  if (!closed) {
    $('#hinweis_header').show();
  } 

  $('#hinweis-close').on('click',function() {
    Cookies.set('hinweis', 'seen');
    $('#hinweis_header').slideUp();
  });
});
#hinweis-close {
  margin-top: -8px;
  float: right;
  color: #fff;
  font-size: 23px;
}
#hinweis_header { display:none }
<div id="hinweis_header">
  <b><a class="hinweis-header" href="<?=SHOP_URL_HTTPS?>/<?=$param["links"]["service"]?>/<?=$sprachdatei["links"]["link_hinweis"]?>">Nur heute: 10 % auf alle Jersey Stoffe >><?=$sprachdatei['header']['hinweis_header']?></a></b>

  <div class="close-btn"><span id="hinweis-close" class="rwd-buttinette-icon rwd-icon-remove-circle-1"></span></div>
</div>
person mplungjan    schedule 21.05.2019
comment
Это не работает, не могу понять, почему именно, так как нет сообщения об ошибке. - person asobak; 21.05.2019
comment
Да, сначала это не сработало, потому что мне пришлось добавить скрипт локально, но после этого коды ошибок и div вообще не отображались. - person asobak; 21.05.2019
comment
На самом деле я сначала исправил эту отсутствующую цитату, так как это то, что я впервые заметил и забыл упомянуть об этом. Я попробую изменить имя файла cookie. - person asobak; 21.05.2019
comment
Я исправил это, и теперь он показывает этот div при каждой перезагрузке страницы, как будто он не сохраняет cookie или не читает. - person asobak; 21.05.2019
comment
Да, у меня была опечатка в имени файла cookie, поэтому он написал бы hinweisHeader, но когда он должен был искать файл cookie, он не мог найти hinweisheader. Теперь работает так, как я хочу, большое спасибо. - person asobak; 21.05.2019