@viktorross

Почему после закрытия окна magnificPopup блокируется весь js на странице?

Здравствуйте, подскажите пожалуйста, почему после того как я открываю модальное окно созданное magnificPopup и закрываю его, т.е ничего не выбираю, чтобы страница перезагрузилась, а просто закрываю, не работает ни один js код на странице?
вызываю вот так, сам скрипт magnific вначале страницы
$(document).ready(function() {
			$('a.freply').magnificPopup({
				type: 'ajax',
				showCloseBtn: true,
				removalDelay: 300,
				closeBtnInside:true
			});
		});
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Sozdavan
Эта проблема может быть вызвана тем, как плагин Magnific Popup обрабатывает удаление модального окна со страницы. Плагин может удалять элементы или прослушиватели событий, которые необходимы для правильной работы другого кода JavaScript на странице. Одним из возможных решений может быть использование функции обратного вызова afterClose, предоставляемой плагином, для повторной инициализации любого необходимого кода JavaScript после закрытия модального окна. Эта функция обратного вызова вызывается после закрытия модального окна, позволяя вам запустить любой необходимый код JavaScript для восстановления функциональности вашей страницы. Другим решением может быть использование опции обратных вызовов для повторной инициализации прослушивателей событий после закрытия модального окна

$(document).ready(function() {
    $('a.freply').magnificPopup({
        type: 'ajax',
        showCloseBtn: true,
        removalDelay: 300,
        closeBtnInside:true,
        callbacks: {
            close: function() {
                //повторно инициализируйте свой код javascript здесь
            }
        }
    });
});


Также возможно, что проблема заключается в других частях вашего кода, которые вы здесь не указали, и потребуется отладить всю кодовую базу
Ответ написан
Комментировать
Fortoo
@Fortoo
Top-Web OpenCart
В моём случае, после закрытия magnificPopup (именно в мобильных браузерах), страница перестала скролиться.
Пришлось сделать костыль и скрипт вставил в файл футера (так надёжнее чем в отдельном файле js)
$(document).mouseup( function(e){ // событие клика по веб-документу
	var div = $("#popup-quickorder"); // тут указываем ID элемента, вложенного внутрь .mfp-content
	if ( !div.is(e.target) // если клик был не по нашему блоку
	    && div.has(e.target).length === 0 ) { // и не по его дочерним элементам
		setTimeout(function(){
                    $('html').css('overflow', '');
                    $('.mfp-wrap').css('overflow', '');
                }, 100);
	}
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы