しばらくすると、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();