2011-03-22 151 views
6

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

例如,我有它设置为535px宽度最初,当特定链接被点击我想要的fancybox调整大小到900px宽度。

任何想法,我可以如何实现这一目标?

谢谢!

回答

18

我想我只是有同样的问题,在我的情况,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-an-iframe-lightbox/

+10

的fancybox V2版本:\t \t '\t \t $( '的fancybox。')的fancybox({ \t \t \t类型: 'IFRAME', \t \t \t afterShow:函数(){ \t \t \t \t $( '的fancybox的iframe')负载(函数(){ \t \t \t \t \t $( '的fancybox-内 ')的高度($(这).contents()发现(' 主体')的高度()+ 30); \t \t \t \t}); \t \t \t} \t \t}); ' – 2012-05-03 11:51:36

+0

@AdrianvanVliet我在哪里可以添加此代码花式箱的WordPress插件? – 2014-06-24 11:45:29

0
$('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的内容大小。这是一个想法,所以代码可能还没有工作。只是为了帮助你走上正确的轨道。

3

对于那些谁可能来这里使用的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' 
       }); 
工作的代码
+0

设置宽度和高度为我工作,甚至自动调整大小:真 – obie 2014-04-04 14:31:13

-1

这对我的作品上的fancybox v2.1.4

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

添加'$ .fancybox.update()'的'onUpdate'事件处理程序会导致无限循环,会吃你的CPU。这是一个实验,在console.log(“update triggered”)上方添加一行,然后使用浏览器控制台查看被调用的次数。 – Lankymart 2014-01-30 13:18:53