一段时间后,我仍然无法在 FancyBox2 中调整 iframe 高度。我在我的父母中这样称呼:
$(document).ready(function() {
$('.fancybox').fancybox();
$('.showframe').fancybox({
openEffect : 'elastic',
closeEffect : 'elastic',
beforeShow: function(){
this.width = ($('.fancybox-iframe').contents().find('body').width());
this.height = ($('.fancybox-iframe').contents().find('body').height());
},
afterClose : function() {
location.reload();
return;
},
onUpdate : { autoHeight: true},
helpers : {
overlay : {closeClick: false}
}
});
});
打开 iframe 时它可以正常工作,但是在 iframe 中我有一个脚本,允许用户上传图像并显示上传图像的预览,因此 iframe 的高度会发生变化(取决于上传的照片数量),但是FancyBox 不会“调整高度”。我在我的“子”iframe 中使用它来触发调整大小:
...some functions here that handle image upload and image display...
parent.$.fancybox.scrollBox();
现在这仅适用于 Firefox,而 Chrome 和 IE 将显示滚动条而不是调整 iframe 高度的大小。有没有办法让这个跨浏览器兼容?
编辑:我让这段代码在所有浏览器中工作:
parent.$('.fancybox-inner').height($('#wrap').height()+20);
但问题是 iframe 不会居中(它只会调整高度,但不会在屏幕上重新居中)。我已经尝试过parent.$.fancybox.center();
, parent.$.fancybox.reize();
并且parent.$.fancybox.update();
什么都没有,但这仅适用于 Firefox。
我发现(纯属幸运)这实际上适用于所有浏览器(甚至 IE8):
parent.$('.fancybox-inner').height($('#wrap').height()+30);
parent.$.fancybox.reposition();