2016-08-18 4 views
0

Я устанавливаю cookie для запуска модального на загрузку страницы. В настоящее время модально происходит только один раз.Установка срока действия cookie

Мне нужно его сбросить каждый месяц, чтобы он постоянно появлялся раз в месяц для каждого посетителя.

Возможно ли изменить мой код, чтобы это произошло, или мне нужно сделать это по-другому? Любая помощь оценивается.

$(document).ready(function() { 
//if cookie hasn't been set... 
if (document.cookie.indexOf("ModalShown=true")<0) { 
    $("#newsletterModal").modal("show"); 
    //Modal has been shown, now set a cookie so it never comes back 
    $("#newsletterModalClose").click(function() { 
     $("#newsletterModal").modal("hide"); 
    }); 
    document.cookie = "ModalShown=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/"; 
} 

});

ответ

2

Только не установлен статический срок годности в вашем печенье, но динамичный:

var now = new Date(); //get the current date 
now.setMonth(now.getMonth() + 1); //add one month to it 
document.cookie = "ModalShown=true; expires=" + now.toUTCString() + "; path=/"; 
1

Эй я собираюсь дать простой код для установки удалить и добавить печенье, которые могут помочь вам

function setCookie(name, value, expire) { 
    document.cookie = name + "=" + escape(value) + ((expire === null) ? "" : ("; expires=" + expire.toGMTString())); 
} 

function checkCookie(name) { 
    if (document.cookie !== "") { 
     var toCookie = document.cookie.split("; "); 
     for (var i = 0; i < toCookie.length; i++) { 
      var CookieName = toCookie[i].split("=")[0]; 
      var CookieValue = toCookie[i].split("=")[1]; 
      if (CookieName === name) return unescape(CookieValue); 
     } 

    } 
} 

function removeCookie() { 
    var CookieAlert; 
    CookieAlert = document.getElementById('cookie'); 
    var expire = new Date(); 
    expire.setMonth(expire.getMonth() + 1); 
    setCookie('agreeCookies', 'yes', expire); 
} 

window.onload = (function() { 
    //IF cookie exists do something 
    if (checkCookie('agreeCookies') !== 'yes') { 
     //Do something in your case dont start modal 
    } else { 
     //START MODAL 
    } 
}); 

Таким образом, в HTML вы можете использовать OnClick = «removeCookie()» на кнопке закрытия в модальных, в основном вы показать модальный и на близком модальный установить печенье, затем через месяц, когда печенье истекает вы показать его еще раз

+1

будьте осторожны, используя ['toGMTString()'] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toGMTString) эта функция устарела: 'Устаревший Это функция удалена из веб-стандартов. Хотя некоторые браузеры все еще могут его поддерживать, он находится в процессе отбрасывания. Не используйте его в старых или новых проектах. Страницы или веб-приложения, использующие его, могут сломаться в любое время. – empiric

+0

О, хорошо знать спасибо @empiric :) –

0

Все, что вам нужно сделать, это обновить дату истечения срока действия, чтобы быть теперь + 1 месяц, а не «Пт, 31 декабря 9999 23:59:59 GMT», но делать это за пределами проверки для файла cookie, чтобы обеспечить существующих пользователей с помощью старая дата истечения срока действия получит обновленный файл cookie.

Смежные вопросы