Fancybox - Обновление размера fancybox с содержимым Iframe?

На своем сайте я открываю fancybox, содержащий содержимое IFRAME. Можно ли обновить размер fancybox при нажатии на ссылку внутри него?

Например, у меня изначально установлена ​​ширина 535 пикселей, при нажатии на конкретную ссылку я бы хотел, чтобы fancybox изменил размер до ширины 900 пикселей.

Есть идеи, как я могу этого добиться?

Спасибо!


person Probocop    schedule 22.03.2011    source источник


Ответы (5)


Я думаю, что у меня такая же проблема, и в моем случае fancybox.resize не работал, но это сработало для меня:

$("#lightbox").fancybox({
  'hideOnContentClick' : true,
  'width' : 500,
  'type' : 'iframe',
  'padding' : 35,
  'onComplete' : function() {
    $('#fancybox-frame').load(function() { // wait for frame to load and then gets it's height
      $('#fancybox-content').height($(this).contents().find('body').height()+30);
    });
  }
});

Спасибо Яну Хоару за публикацию этого здесь: http://www.ianhoar.com/2011/08/25/jquery-and-fancybox-how-to-automatically-set-the-height-of-iframe-lightbox/

person why.you.and.i    schedule 28.08.2011
comment
Версия Fancybox v2: ` $('.fancybox').fancybox({ type: 'iframe', afterShow: function() { $('.fancybox-iframe').load(function() { $('.fancybox -inner').height($(this).contents().find('body').height()+30); }); } }); ` - person Adrian van Vliet; 03.05.2012
comment
@AdrianvanVliet Где я могу добавить этот код для плагина WordPress для Fancy Box? - person Imran Bughio; 24.06.2014

Для тех, кто может прийти сюда с помощью Fancybox 2:

Это код, который работал для меня

$(".iframe").fancybox({
                    autoSize: false,
                    autoDimensions: false,
                    width: 630,
                    height: 425,
                    fitToView: false,
                    padding: 0,
                    title: this.title,
                    href: $(this).attr('href'),
                    type: 'iframe'
                });
person turtlepick    schedule 19.07.2012
comment
установка высоты и ширины работала для меня, даже с autoSize: true - person obie; 04.04.2014

$('a', $('#youriframeID').contentDocument).bind('click', function() {
    preventDefault();
    $('#yourIframeID').attr('src', $(this).attr('href'));
    $('#yourIframeID').load(function() {
        $.fancybox.resize;
    });
});

Если в вашем iframe щелкнуть «a», события по умолчанию будут заблокированы. Вместо этого мы меняем src вашего iframe. После загрузки #.fancybox.resize автоматически изменит размер fancybox в соответствии с содержимым. Это идея, поэтому код, вероятно, еще не будет работать. Просто чтобы помочь вам встать на правильный путь.

person Community    schedule 22.03.2011

Fancybox 3.3.1 автоматически изменяет размер окна при перезагрузке содержимого iFrame. Параметр является предварительной загрузкой, и по умолчанию он равен true.

См. https://fancyapps.com/fancybox/3/docs/#iframe. .

Я протестировал его, и он работает, но я все еще получаю очень короткую полосу прокрутки в последних версиях Chrome и FF. Функция update() неправильно вычисляет высоту. Это похоже на ошибку, и я разместил ее в репозитории fancybox Github. К сожалению, репо заброшено уже год.

person needfulthing    schedule 19.02.2021

Это работает для меня на fancyBox v2.1.4

$('#myid').fancybox({
    closeBtn    : false,
    padding     : 0,
    preload     : true,
    onUpdate    : function(){
        $.fancybox.update();
    }
});
person Andrey    schedule 04.04.2013
comment
Добавление $.fancybox.update() к обработчику событий onUpdate вызовет бесконечный цикл, который съест ваш процессор. Вот эксперимент, добавьте строку выше console.log("update triggered");, затем с помощью консоли браузера посмотрите, сколько раз это вызывается... - person user692942; 30.01.2014