2011-09-16 16 views
0

colorbox(jqueryプラグイン)を使用して複数ステップのサインアッププロセスを表示しています。私は "iframe"モードでcolorboxを使用しています。colorboxでiframeコンテンツを再読み込みすると問題が発生する

$('#signup').colorbox({ 
    width:  '500px', 
    height: '250px', 
    opacity: '.5', 
    scrolling: false, 
    fixed:  true, 
    iframe: true 
}); 

異なるステップの内容が異なるので、新しいステップをロードするときにcolorboxのサイズを自動的に変更したいと思います。

私は(単に文書の終わり近くにスクリプトタグ内)のiframeコンテンツに次のコードを使用

parent.$.colorbox.resize(); 

:私は簡単なバージョンを試してみましたその前に

$(function() { 
    var iH = $(document.body).height(); 
    console.log("iframe height: " + iH); 
    parent.$.colorbox.resize('height', iH); 
}); 

をしかしどちらの場合も無限ループのように見えます。iframeの内容は無限に再ロードされ、実際には表示されません(実際には時々点滅することがあります)。 iframeは(最初のループ中に)プロセス内でサイズ変更されるため、部分的に機能しているようです。しかし、新しいサイズは意図されたコンテンツには小さすぎるようですので、私は実際にはわかりません...

これはなぜ動作しないのですか?

更新: 私が最初に第二段階ではなく上で上記のスクリプト(簡易版)を入れた場合、私は無限ループを避けるため、しかし私は2番目のステップに行くためにクリックし、最初ステップが実際にロードされます。
私はこのスクリプトを3番目のステップに入れても同じことが起こります。最初のステップが代わりに読み込まれます。
だから、最初からそれをすべて、再起動のカラーボックスの種類をその「サイズを変更」機能を実行するときようだ...

+0

はどうなりますか? – chim

+0

btwあなたはまだ答えをお探しですか? – chim

+0

@chim:私はちょっと諦めましたが、私はまだこれを解決するために興味があります。私は高さの代わりにinitialHeightを使うことを考えなかった。私は明日それを試してみるよ。 – s427

答えて

2

私はここに解決策を見つけた:?http://groups.google.com/group/colorbox/browse_thread/thread/fadc3d68ca764de3/c38fa24136a6abd7?pli=1

がcolorbox.jsにこれを追加しました(

publicMethod.myResize = function (iW, iH) { 
if (!open) { 
    return; 
} 
if (settings.scrolling) { 
    return; 
    } 
var speed = settings.transition === "none" ? 0 : settings.speed; 
$window.unbind('resize.' + prefix); 
settings.w = iW; 
settings.h = iH; 
$loaded.css({ 
    width: settings.w, 
    height: settings.h 
}); 
publicMethod.position(speed); 
}; 

と私は、iframe内のページの開口部にこれを追加しました::カラーボックスv1.3.17.2、右publicMethod.resize前)R 533の

$(document).ready(function(){ 
    $(window).bind('load', function() { 
     var frameWidth = $(document).width(); 
     var frameHeight = $(document).height(); 
     parent.$.fn.colorbox.myResize(frameWidth, frameHeight); 
    }); 
}); 
私は、このオプションを使用するカラーボックス機能をバインドするには

:あなたはサイズを変更していない後続の呼び出しでinitialWidthとinitialHeightの代わりに、高さと幅を設定した場合

$('.item').colorbox({ 
    transition: 'none', 
    iframe  : true, 
    scrolling : false 
}); 
+0

それは働いているようです、どうもありがとう!しかし、1つの問題:コンテンツが以前のコンテンツより大きければ、ポップアップのサイズを変更するように見えます。小さい場合(サイズ変更しない場合)なぜこのようなことが起こるのか? – s427

+0

本当にわかりません、申し訳ありません。私が作業していたプロジェクトでは、Colorboxは非常に多くの変更を必要としました。最終的には自分自身でライトボックスを作成することにしました。 –

+0

ええ、私はあなたが意味するものを参照してください。私はこの問題(さまざまな理由で)のために自分自身をあきらめました。とにかく助けてくれてありがとう! – s427

関連する問題