Здравствуйте. Создал скрипт модального окна, которое автоматически появляется на странице сайта спустя 3 секунды. Добавил туда checkbox, который если отметить, то модальное окно при следующей перезагрузке страницы не должно появится. То есть отмечая checkbox, записываем в браузер cookies для пользователя. Вот мой код: (Прошу не обращать внимания на вставки php кода - это плагин для cms) Код (Javascript): <div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog" aria-labelledby="staticBackdropLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> </div> <div class="modal-body"> <?= $cont; ?> </div> <div class="modal-footer"> <div class="banner-modal-hide" <?php if ($hide) echo 'style="display: none;"';?>> <input class='modal-check' name='modal-check' type="checkbox"> Больше не показывать это </div> <button type="button" class="<?= $buttontype; ?>" data-dismiss="modal"><?= $buttontext; ?></button> </div> </div> </div> </div> <style> .modal-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; padding: 0.75rem; border-top: 0 solid #0079f3; border-bottom-right-radius: 0.3rem; border-bottom-left-radius: 0.3rem; background: #e1e1e1; } </style> <script> function explode(){ // $(document).ready(function() { $("#staticBackdrop").modal('show'); // }); } setTimeout(explode, <?= $sec; ?>); </script> <script type = "text/javascript"> $(document).ready(function(){ var my_cookie = $.cookie($('.modal-check').attr('name')); if (!my_cookie) { $('#myModal').modal('show'); } $(".modal-check").change(function() { if($(this).prop('checked')){ $.cookie($(this).attr("name"), $(this).prop('checked'), { path: '/', expires: 1 }); } }); }); </script> Но, как бы я не мучался, не получается и все. Может в моём коде есть какая-то грубая ошибка? Буду признателен мастерам с черным поясом по javascript.
1. У вас вызов в таймере функции показа окна идёт всегда, без проверки есть ли куки 2. Проверка наличия чекбокса идёт при загрузке скрипта, в момент когда чекбокса и не видно - запись Кук нужно вешать на событие change чекбокса. Кароче нет у вас понимания как js работает, что такое события и что за чем идет... А черных поясов для этого и не нужно... Это основы
самое простое условие наскоряк которое пришло в голову пишем событие в сессию с ключом, например - modal, проверяем: если есть сессия с ключом modal, то (внутри условия размещаем html модалки), в конце условия делаем unset сессии modal, в скриптах размещаем код открывающий модалку через 3 секунды, если сработает условие на сессию, то скрипту станет виден атрибут модалки по которому делается show, так как мы сделали unset сессии modal, то после перезагрузки страницы условие не сработает, атрибут модалки для её открытия не будет виден для show и модалка не откроется пока не наступит условие наличия сессии modal