花式框与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选项,但是您可能需要取消所有转换(将nextSpeed和prevSpeed设置为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