0

ファンシーボックスがロードしているiframe内のタグに格納されている情報に基づいて、ファンシーボックスオブジェクトのいくつかの値を動的に設定しようとしています。問題は、コンテンツから正しい値を取得できるように見えるのは(ivは、可能な限りすべてのコールバックコンボを試した)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コンボはありますか?ありがとう!

4

1 に答える 1

12

コールバック オプションを使用することもできますが、すべての遷移 ( setおよびto )beforeShowをキャンセルする必要がある場合があります。nextSpeedprevSpeed0

遷移速度は、コールバックを使用してジャンプ効果を作成する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

ここでデモを見る

于 2012-05-27T19:06:23.633 に答える