花式框与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的组合,可以实现这个之前,显示花式框? 谢谢!
您也可以使用beforeShow
callback选项,但是您可能需要取消所有转换(将nextSpeed
和prevSpeed
设置为0
)。
转换速度似乎是使用afterShow
callback创build跳跃效果,或避免使用afterShow
callback获得正确的值。
您可能还需要更新到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