Как сделать условие показа модального окна в JS

Как реализовать условия добавления класса

Добавляется класс active через 15 сек после открытия сайта
и для одного пользователя работает скрипт раз в 3 дня

$(window).on("load", (function(){
    $('.modal').addClass('active');
})

Суть: показать модальное окно одному пользователю раз в 3 дня и 15 секунд после открытия сайта


Ответы (1 шт):

Автор решения: mego4iter

В LocalStorage хранить последнее время показа, при запуске сайта сверять его с текущим

$(window).on("load", (function(){
  var delay3day = 1000 * 60 * 60 * 24 * 3;

  function activateModal() {
    $('.modal').addClass('active');
    localStorage.setItem('prevShowTimestamp', new Date().now());
    setTimeout(() => activateModal(), delay3day);
  }

  let prevShowTimestamp = localStorage.getItem('prevShowTimestamp');

  // Если с последнего запуска прошло 3 дня
  if (prevShowTimestamp && (new Date().now() - prevShowTimestamp > delay3day)) {
    prevShowTimestamp = null;
  }

  if (!prevShowDateTime) {
    // Если модалку ещё непоказывали    
    setTimeout(() => activateModal(), 1000 * 15);
  } else {
    // Если последний паказ был менее чем 3 дня назад
    setTimeout(
      () => activateModal(), 
      delay3day - (new Date().now() - prevShowDateTime))
  }
})
→ Ссылка