Как разрешить всплывающее сообщение только при первом посещении с помощью jQuery - PullRequest
0 голосов
/ 01 июня 2019

Я работаю над тем, чтобы включить уведомление в стиле GDPR / Cookie для случаев, когда пользователи посещают наш сайт впервые, но не снова, пока они не очистят свой кэш. У меня настроено уведомление, чтобы показать, когда окно открывается, и кнопка закрытия, чтобы закрыть его.

Я пытался использовать localStorage и sessionStorage jquery, аналогичные тем, которые использовались, чтобы помочь другим пользователям, включая сначала скрытие всплывающего окна, а затем проверку в localStorage, чтобы увидеть, есть ли оно:

 $(document).ready(function() {
        $('#toast').hide();
        var element= localStorage.getItem('status');
        if (element == null || element == '') {
            localStorage.setItem('element', 1);
            $('#toast').show();
        }});

Но 1) я не хочу копировать макароны, потому что 2) это не работает.

html для всплывающего окна здесь:

<div id="toast" class="toast-close fixed-bottom" style="background-color: #DB7232; color: white; opacity: .7; margin: 0 0 2rem 2rem; padding: 1rem; width: 18rem;">
     <small>By continuing to browse this site, you're accepting the use of cookies.</small>
     <small><button type="button" data-dismiss="toast" class="close" aria-label="Close">&times</button></small>
</div>

jquery, чтобы закрыть всплывающее окно здесь:

    $(document).on('click', '.toast-close', function() {
        $(this).fadeOut(function(){
           $(this).remove();
        });
    });

Я ожидаю, что когда пользователь заходит на наш сайт впервые (или с тех пор, как мы добавили эту функцию), всплывающее окно появится; как только они выходят из всплывающего окна или из браузера, уведомление больше не будет появляться, пока их кэш не будет очищен.

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Вы читаете «статус», но настраиваете «элемент».Эти два имени должны быть одинаковыми.

0 голосов
/ 01 июня 2019

Та часть, в которой вы считаете, что вам не хватает, я не уверен.

Ваш общий поток кода: 1) Проверьте наличие файлов cookie / localalstorage 2) Условно вывести всплывающее окно 3) Установите cookie / localalstorage, если пользователь согласен

Я вижу, у вас есть .hide () перед вашей логикой cookie. Я бы оставил этот HTML-фрагмент где-нибудь еще (отображать: нет?), Если он вам конкретно не нужен.

Похоже, вы знаете, как отобразить / уменьшить его, если вам это нужно.

...