2013-01-14 10 views
6

FancyBox2でiframeの高さを変更しても問題が残っています。 私は私の親でこれを呼び出しています:Fancybox iframe dynamic resize

$(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でこれを使用しています:ChromeとIEの代わりにiframeの高さをリサイズのスクロールバーが表示されますながら

...some functions here that handle image upload and image display... 
parent.$.fancybox.scrollBox(); 

は今、これはFirefoxでのみ動作します。このクロスブラウザを互換にする方法はありますか?

EDIT:

parent.$('.fancybox-inner').height($('#wrap').height()+20); 

が、問題はインラインフレームを中央(それだけの高さにサイズが変更されますされませんが、画面上の中央を再ではないということです。私はすべてのブラウザで動作するように、このコードを取得)。私はparent.$.fancybox.center();parent.$.fancybox.reize();parent.$.fancybox.update();を試してみましたが、それはFirefoxでは動作しません。

私は、これは実際にすべてのブラウザ(IE8でも)で動作していること(純粋な運で)見つけた:

parent.$('.fancybox-inner').height($('#wrap').height()+30); 
parent.$.fancybox.reposition(); 
+0

試し(子ページ内)メソッド '親を呼ぶ$ fancybox.update()'サイズの後に変更されました。また、 'onUpdate'の形式は' onUpdate:function(){...} 'でなければなりません。 'this.height = $( 'fancybox-iframe')。contents()。find( 'body')。innerHeight();' – JFK

答えて

2

嬉しいあなたがあなたの答えを見つけて、それに感謝。 だけヒントは - あなたはまた、より多くのdivのサイズを変更するあなたが持っている幅を再調整したい場合はFancybox 1.3.4ユーザーのために、それは

parent.$.fancybox.center(); 

です。 。私の完全なリサイズは、次のようになります。

// get iframe height and width 
var current_height = document.getElementById('popup').offsetHeight; 
var current_width = document.getElementById('popup').offsetWidth; 

// resize height 
parent.$('.fancybox-inner').height(current_height + 30); 

// resize width 
parent.$('#fancybox-outer').width(current_width + 30); 
parent.$('#fancybox-wrap').width(current_width + 30); 
parent.$('#fancybox-content').width(current_width + 30); 
parent.$('.fancybox-inner').width(current_width + 30); 

// center the thing - vertically and horizontally 
parent.$.fancybox.center(); 
parent.$.fancybox.resize(); 

テスト済みIE8 +、Firefoxの、クロム

関連する問題