1

私はjQuery用の小さなライトボックスプラグインを作成しました(はい、いくつかの既製のパッケージがあります-残念ながら、私の会社のデザイナーはそれらのどれも好きではありません)。

小さな問題が1つあります。.load()を使用して動的フラッシュコンテンツをライトボックスdivにロードしています。divをDOMに追加し、可視性を非表示に事前設定し、.outerHeight(true)と.outerWidth(true)を使用してディメンションを取得しています。Internet Explorerでは、高さが61px(マージン+ 1px)になっています。

仮定:contentContainerはすでにbodydomfragに追加されています

var remote = $(document.createElement("div"));
remote.css( "margin", "30px" );     
var loadURL = $(this).attr( 'href' );

if( typeof( isImage ) == "undefined" || !isImage ){
    console.log( "Loading " + loadURL );
    contentContainer.append( remote );
    remote.load( loadURL, function(){                   
        contentContainer.css( "left", (currWindow.width/2) - (contentContainer.outerWidth(true)/2) )
            .css( "top", document.body.scrollTop + (currWindow.height/2) - (contentContainer.outerHeight(true)/2) );
        overlay.css( "visibility", "visible" );
        contentContainer.css( "visibility", "visible" );
    });
}

高さと幅が明示的に設定された基本的なdivは、リモートにロードされるものです。

助言がありますか?高さと幅を計算しようとすると、それはばかげていると思います。それは基本的なイメージで動作しましたが...

ジョシュ

4

1 に答える 1

2

コールバックの内容をwindow.setTimeoutで0ミリ秒で囲んでみてください。これは、実行する前に現在の呼び出しスタックがアンワインドするのを待ちます。私の経験では、これにより、ブラウザイベントが発生した後、IEがウィンドウを再描画する前にコールバックが実行されるときのコールバックタイミングに関するいくつかのIEの問題が修正されます。

于 2009-12-14T00:42:27.033 に答える