menex.ru
← Все статьи

Работа с cookies на jQuery

05.09.2023 • Теги: #cookies #jQuery #wordpress

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

На выручку пришел сайт https://codernote.ru/jquery/rabota-s-cookies-na-jquery/ на нем подробно описано как это реализовать.

Я же реализовал так:

Скачал файл с github.com

Подключил его, при условии, что библиотека jQuery подключена.

<script type="text/javascript" src="https://elmagaz.ru/js/jquery.cookie.js"></script>

На странице, где мне нужна была появляющаяся подсказка добавил код с блоком:

<div class="mobile_hand_scrolle_table">
    <div class="popup_hand">
        <img src="/img/hand_scrolle.png">
        <p>двигайте таблицу чтобы увидеть целиком</p>
        <span>понятно</span>
    </div>
</div>

Прописал скрипт, который проверяет определена ли кука и если нет, до добавляет класс к блоку «mobile_hand_scrolle_table» .show_popup при нажатии на это окно, класс .show_popup удаляется, и в куки записывается переменная show_scroll_table=yes и в последствии это окно будет скрыто по истечении 365 дней.

mobile_hand_scrolle_table
<script type="text/javascript">
if ( jQuery.cookie('show_scroll_table') == null ) {
    jQuery('.mobile_hand_scrolle_table').addClass('show_popup');
}
    else {
jQuery('.mobile_hand_scrolle_table').removeClass('show_popup');
}

jQuery('.mobile_hand_scrolle_table .popup_hand').on('click', function(e){
    e.preventDefault();
    jQuery('.mobile_hand_scrolle_table').removeClass('show_popup');
    jQuery.cookie('show_scroll_table', 'yes', { expires: 365, path: '/' });
});
</script>

Где expires: 365 - это количество дней жизни переменной, path: '/' — это для всех страниц сайта установлена кука, можно прописывать конкретный адрес.

А также прописываю стили для блока, чтобы он по умолчанию появлялся, а когда мы по нему кликнули, то скрывался. Конкретно в этом варианте, он появляется один раз только на мобильных устройствах.

.mobile_hand_scrolle_table {
    display:none;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background: rgba(2, 2, 2, 0.55);
    justify-content: center;
    align-items: flex-start;
}
.mobile_hand_scrolle_table .popup_hand {
    display: inline-flex;
    padding: 20px;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 12px;
    margin:105px 0 0 0;
    border-radius: 9px;
    background: rgba(255, 255, 255, 0.82);
    width: 190px;
}
.mobile_hand_scrolle_table .popup_hand img {
    width: 53px;
    height: 53px;
}
.mobile_hand_scrolle_table .popup_hand p {
    color: #000;
    text-align: center;
    font-size: 12px;
    font-style: normal;
    font-weight: 400;
    line-height: normal;
}
.mobile_hand_scrolle_table .popup_hand span {
    display: flex;
    padding: 10px 30px;
    align-items: flex-start;
    gap: 10px;
    border-radius: 8px;
    background: #FFF;
    color: #000;
    text-align: center;
    font-size: 12px;
    font-style: normal;
    font-weight: 400;
    line-height: normal;
}
@media only screen and (max-width: 768px) {
    .mobile_hand_scrolle_table.show_popup {
        display: flex;
    }
}