Jquery Fancybox-使用Iframe内容更新Fancybox的大小?

Jquery Fancybox-使用Iframe内容更新Fancybox的大小?,jquery,fancybox,Jquery,Fancybox,在我的网站上,我打开了一个包含IFRAME内容的fancybox。当在fancybox中单击链接时,是否可以更新fancybox的大小 例如,我最初将其设置为535px宽度,当单击特定链接时,我希望fancybox调整为900px宽度 你知道我怎样才能做到这一点吗 谢谢 $('a', $('#youriframeID').contentDocument).bind('click', function() { preventDefault(); $('#yourIframeID')

在我的网站上,我打开了一个包含IFRAME内容的fancybox。当在fancybox中单击链接时,是否可以更新fancybox的大小

例如,我最初将其设置为535px宽度,当单击特定链接时,我希望fancybox调整为900px宽度

你知道我怎样才能做到这一点吗

谢谢

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

如果在iframe中单击“a”,则默认事件将被阻止。相反,我们更改iframe的src。加载时,#.fancybox.resize将根据内容自动调整fancybox的大小。这是一个想法,所以代码可能还不能工作。只是为了帮助您走上正确的道路。

我想我也有同样的问题,在我的情况下,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);
    });
  }
});
Ian Hoar在此处发布以下内容:

对于那些可能使用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'
                });

这在fancyBox v2.1.4上适用

$('#myid').fancybox({
    closeBtn    : false,
    padding     : 0,
    preload     : true,
    onUpdate    : function(){
        $.fancybox.update();
    }
});

Fancybox 3.3.1在重新加载iFrame内容时自动调整框的大小。参数为“preload”,默认为true


我测试了它,它的工作,但我仍然得到一个非常短的滚动条在最新的铬和FF。update()函数似乎计算出了错误的高度。它看起来像一个bug,我将它发布在fancybox Github存储库中。不幸的是,回购协议被放弃了一年。

Fancybox v2版本:`$('.Fancybox').Fancybox({type:'iframe',afterShow:function(){$('.Fancybox-iframe').load(function(){$('.Fancybox-inner').height($(this.contents().find('body').height()+30);})`@AdrianvanVliet我在哪里可以为Fancy Box的WordPress插件添加此代码?将
$.fancybox.update()
添加到
onUpdate
事件处理程序将导致无限循环,这将消耗您的CPU。下面是一个实验,在
console.log上面添加一行(“更新触发”)然后使用浏览器控制台查看调用了多少次…设置高度和宽度对我有效,即使使用autoSize:true