undefined не является объектом с magnificpopup.close

#javascript #jquery #magnific-popup

#javascript #jquery #magnific-всплывающее окно

Вопрос:

У меня есть пользовательская кнопка закрытия во всплывающем окне с использованием magnificPopup. Кнопка закрытия работает в FireFox, но не в Chrome или Safari. В Safari я получаю следующую ошибку:

неопределенный не является объектом (вычисление ‘jQuery.magnificPopup.close’)

Это мой JS:

 jQuery(document).ready(function($) {
    setTimeout(function() {
        if ($('#cookies-message').length) {
            $.magnificPopup.open({
                items: {
                    src: '#cookies-message' 
                },
                type: 'inline'
            });
        }
    }, 1000);
});

jQuery(document).on('click', '.popup-modal-dismiss', function (e) {
    //e.preventDefault();
    jQuery.magnificPopup.close();
});
 
 <div id="cookies-message" class="cookie-message mfp-hide">
    <img src="/wp-content/themes/site/img/cookies.svg">
    <p>… but we also use them to give you the best experience on our website, which is full of other healthy solutions</p>
    <p><a class="popup-modal-dismiss" href="#">OKIDOKI</a></p>
</div>
 

Ответ №1:

Возможно, вы загружаете magnificPopup до загрузки jQuery, и в этом случае он не будет доступен для объекта jQuery.

Вы должны иметь возможность безопасного доступа к magnificPopup с помощью $.magnificPopup .

Ответ №2:

Попробуйте так

 $.magnificPopup.close();
 

или

 var magnificPopup = $.magnificPopup.instance; // save instance in magnificPopup variable
magnificPopup.close(); // Close popup that is currently opened
 

Обратитесь к этому