@unlik

Не работает jquery cookie?

Есть такое модальное окно. По задумке должны записываться куки, и открываться только раз в 7 дней. Но открывается постоянно. Что могу делать не так?

<!-- Модальное Окно  -->
		<div id="overlay">
			<div class="popup_2">
				<h2>Модальное Окно!</h2>
				<p>
					Ширина модального окна задана в процентах, в зависимости от ширины родительского контейнера, в данном примере это
					фон затемнения.
				</p>
				<button class="close" title="Закрыть" onclick="document.getElementById('overlay').style.display='none';"></button>
			</div>
		</div>

		<script type="text/javascript">
			$(function () {
				// Проверяем запись в куках о посещении
				// Если запись есть - ничего не происходит
				if (!$.cookie('hideModal')) {
					// если cookie не установлено появится окно
					// с задержкой 5 секунд
					var delay_popup = 5000;
					setTimeout("document.getElementById('overlay').style.display='block'", delay_popup);
				}
				$.cookie('hideModal', true, {
					// Время хранения cookie в днях
					expires: 7,
					path: '/'
				});
			});
		</script>
  • Вопрос задан
  • 712 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kudis
Bitrix developer
Без подключения jq cookie можно сделать так, как советуют здесь

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

function getCookie(cname) {
    var name = cname + "=";
    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 () {
    // Проверяем запись в куках о посещении
    // Если запись есть - ничего не происходит
    if (!getCookie('hideModal')) {
        // если cookie не установлено появится окно
        // с задержкой 5 секунд
        var delay_popup = 5000;
        setTimeout("document.getElementById('overlay').style.display='block'", delay_popup);
    } else {
        console.log('no way');
    }
    setCookie('hideModal', true, 7);
});

Естественно все функции определяйте не инлайново
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы