花哨的盒子在beforeShow函数中使用iframe?

roo*_*ubu 0 iframe jquery fancybox fancybox-2

我试图动态设置我的Fancybox对象的一些值基于存储在iframe正在加载的iframe内的标签中的信息.问题是,我唯一能够从内容中获取CORRECT值(iv几乎可以尝试每个回调组合)都在afterShow方法上.这会导致宽度和高度的跳跃过渡,在显示后会重置.

$('.fancybox').fancybox({
            openEffect : 'elastic',
            closeEffect : 'elastic',
            autoSize:true,
            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方法之外的任何东西都给我正确的结果,甚至在Show之前(这就是我想要的).是否有任何回调/ jquery组合可以在显示奇特的盒子之前实现这一点?谢谢!

JFK*_*JFK 12

您也可以使用beforeShow回调选项,但可能需要取消所有转换(设置nextSpeedprevSpeed转移0).

转换速度似乎是使用afterShow回调创建跳跃效果或避免使用回调获取正确的值beforeShow.

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

此外,您还可以在不使用外部变量的情况下简化脚本:

$(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
Run Code Online (Sandbox Code Playgroud)

在这里查看DEMO