我试着去动态地设置根据存储在标签看中箱加载其中一个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的组合,可以显示看中禁区前实现这一目标? 谢谢!
你也可以使用beforeShow
回调选项,但您可能需要取消所有的转换(设置nextSpeed
和prevSpeed
至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
见DEMO这里