изображение в увеличительном всплывающем окне в iframe

#iframe #magnific-popup

#элемент iframe #увеличительное всплывающее окно #iframe #увеличенное всплывающее окно

Вопрос:

у меня динамически отображается увеличительное всплывающее окно, но изображение отображается после события загрузки, поэтому я не могу получить значение изображения в событии открытия. есть ли какое-либо событие onload во всплывающем окне magnific?

  function OpenPopup(el) {
            var temp = el.innerHTML;
            var mysrc = $(temp).attr("src");
            var isobj = $.magnificPopup.open({
                items: {
                    src: mysrc,
                    onload: 'myevent()',
                },
                type: 'iframe',
                closeOnBgClick: false,
                markup: '<div class="mfp-iframe-scaler">'  
                 '<div class="mfp-close"></div>'  
                 '<iframe class="mfp-iframe" frameborder="0" onload="myevent()"></iframe>'  
                 '<div class="mfp-bottom-bar">'  
                   '<div class="mfp-title"></div>'  
                 '</div>'  
               '</div>',
                callbacks: {
                    beforeOpen: function () {
                        console.log('Start of popup initialization');
                    },
                    elementParse: function (item) {
                        // Function will fire for each target element
                        // "item.el" is a target DOM element (if present)
                        // "item.src" is a source that you may modify
                        debugger;
                        console.log('Parsing content. Item object that is being parsed:', item);
                    },
                    change: function () {
                        console.log('Content changed');
                        console.log(this.content); // Direct reference to your popup element
                    },
                    resize: function () {
                        console.log('Popup resized');
                        // resize event triggers only when height is changed or layout forced
                    },
                    open: function () {
                        console.log('Popup is opened');
                        debugger;
                        var iframe = $.magnificPopup.instance,
          t = $(iframe.currItem.el[0]);
                        var contents = iframe.contents();
                        $(contents).css('max-width', '100%');
                        $(contents).css('max-height', '100%');
                    }
                }
            });
  

Ответ №1:

Неправильное решение, я добавил временное событие, которое изменяет размер изображения после его загрузки. Пришлось много играть, чтобы получить идеальное время, чтобы не было сбоев. Вот код:

 function OpenPopup(el) {
            var temp = el.innerHTML;
            var mysrc = $(temp).attr("src");
            var isobj = $.magnificPopup.open({
                items: {
                    src: mysrc,
                },
                delegate: 'a',
                type: 'iframe',
                closeOnBgClick: false,
            });
            setTimeout(setImage, 500);
        };
function setImage() {
            var iframe = $('.mfp-iframe');
            var contents = iframe.contents();
            $(contents).find('img').attr('width', '100%');
            $(contents).find('img').attr('height', '100%');
        }