花式框与ifShow函数中的iframes工作?

我试图dynamic地设置我的Fancybox对象的一些值,基于存储在iframe中的标签中的信息,这个iframe正在加载。 问题是,我似乎只能从内容中获取CORRECT值(iv几乎尝试了每个可能的callback组合)都是afterShow方法。 这会导致显示后重置的宽度和高度的跃变。

 $( '的fancybox')。的fancybox({
             openEffect:'弹性',
             closeEffect:'弹性',
             autoSize的:真实,
             afterShow:function(){
                     var fancy = this;
                     var()h = $('。fancybox-iframe')。contents()。find('html')。height();
                     ()。var w = $('。fancybox-iframe')。contents()。find('html')。width();
                     fancy.width = w;
                     fancy.height =(h + 50);
             }
         });

afterShow方法之外没有任何东西给我正确的结果,甚至在显示之前(这就是我所要做的)。 有没有任何callback/ jQuery的组合,可以实现这个之前,显示花式框? 谢谢!

您也可以使用beforeShowcallback选项,但是您可能需要取消所有转换(将nextSpeedprevSpeed设置为0 )。

转换速度似乎是使用afterShowcallback创build跳跃效果,或避免使用afterShowcallback获得正确的值。

您可能还需要更新到fancybox版本v2.0.6。

另外,你也可以简化你的脚本而不使用外部variables,如:

 $(document).ready(function() { $("a.fancybox").fancybox({ openEffect : 'elastic', closeEffect : 'elastic', fitToView: false, nextSpeed: 0, //important prevSpeed: 0, //important beforeShow: function(){ // added 50px to avoid scrollbars inside fancybox this.width = ($('.fancybox-iframe').contents().find('html').width())+50; this.height = ($('.fancybox-iframe').contents().find('html').height())+50; } }); // fancybox }); // ready 

在这里看DEMO