Открывать Pop-up раз в день - JS

147
13 ноября 2018, 17:30

Есть поп-ап:

div class="email-alerts-pops">  
        <img src="/wp-content/uploads/2017/04/looog.png" class="pop-logo">
        <div class="greyback">
            <h2 class="stayahd">Stay Ahead of Everyone Else</h2>
            <h2 class="latest"> Get The Latest <span> Stock News Alerts </span></h2>
        </div>
        <div class='thank-you-for-signing-up'>
            <h5> Thank You For Signing Up </h5>
        </div>
        <div class='error-signing-up'>
            <h5> Error Signing Up. Please Try Again. </h5>
        </div>
        <div class="email-alerts-form">
            <form method="POST" action="subscribe-to-email-alerts" class="submitform">
                <input type='hidden' name='origin' value='before-you-leave' />
                <?php if(has_category('brief')){?>
                <input type='hidden' name='catebrief' value='1' />
                <?php }?>
                <input required type="email" name="email" placeholder="Enter Your Email">
                <button class='signup-button'>sing me up</button>
            </form>
        </div>

И крепиться к нему вот это непонятное чудовище

    jQuery(function($) {
            var shouldShow = !window.matchMedia || window.matchMedia("(min-width: 1024px").matches;
            if(!shouldShow) return;
            var one = false;
            if(DontShowPopUp){
                var one = true;
            }
            $(window).scroll(function() { // show when user reaches bottom
                if(jQuery("#disqus_thread").length > 0){
                    if($(window).scrollTop() + $(window).height() > jQuery("#disqus_thread").offset().top) {
                        if(one) return; // already shown.
                        one = true;
                        $(".email-alerts-pops").modal();    
                    }
                }
            });

            // show after 90s
            setTimeout(function() {
                if(one) return; // already shown.
                one = true;
                $(".email-alerts-pops").modal();
            }, 90 * 1000);
            $(".error-signing-up").hide();
            $(".thank-you-for-signing-up").hide();
            $(".submitform").submit(function(e) {
                e.preventDefault();
            // куки?
                var expiryDate = new Date();
                expiryDate.setDate(expiryDate.getDate() + 1);
                document.cookie = 'popUpStatus=1; expires=' +expiryDate+ '; path=/';
                $.post("/subscribe-to-email-alert", $(this).serialize()).done(function(res) {
                    $(".email-alerts-form").hide();
                    $(".thank-you-for-signing-up").show();
                    ga('send', 'pageview', "/subscribe-to-email-alerts");
                    }).fail(function(err) {
                    $(".email-alerts-form").hide();
                    $(".error-signing-up").show();
                });
            });

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

Answer 1

Для работы с cookie можно воспользоваться вот этим. А код при проверке будет выглядеть примерно так:

if(DontShowPopUp || readCookie('isShown')){
                var one = true;
} else
  createCookie('isShown', true, 1);

Здесь createCookie создаёт куку, и при необходимости вызов можно перенести в другое место (в submit, например, как у Вас)

READ ALSO
Нет инерционной прокрутки на iPhone

Нет инерционной прокрутки на iPhone

Выявил на сайте такую проблему, причем она присутствует только на iPhoneЕсли попытаться скроллить пальцем страницу вниз, проведя пальцем и отпустив...

150
Раскрасить текст разными цветами

Раскрасить текст разными цветами

Имеется 4 цвета: red, yellow, blue, green

172
Клик с последующим scrollLeft. Как?

Клик с последующим scrollLeft. Как?

Значит есть "горизонтальная" разметка, родитель 200% ширины и высота 100vh, две дочерние секции по 100% ширины, такой же высоты, overflow-y: hidden; Пс

145