在beforeShow功能的I帧看中箱的工作?在beforeShow功能的I帧看中箱的工作?(fan

2019-05-14 15:02发布

我试着去动态地设置根据存储在标签看中箱加载其中一个iframe的内部信息我的fancybox对象的某些值。 问题是,我唯一一次似乎可以得到正确的价值观出内容(四试过几乎所有的回调可能的组合)是在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方法之外给我正确的结果,甚至beforeShow(这正是我打算)。 是否有任何的回调/ jQuery的组合,可以显示看中禁区前实现这一目标? 谢谢!

Answer 1:

你也可以使用beforeShow回调选项,但您可能需要取消所有的转换(设置nextSpeedprevSpeed0 )。

过渡的速度似乎是创建使用跳跃效果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

见DEMO这里



文章来源: fancy box work with iframes in beforeShow function?