2011-12-04 5 views
0

イメージをボックスの中央に表示する関数を記述しました。しかし、イメージがロードされると、位置情報を含むいくつかのデフォルトスタイルが提供されます。中央の画像機能を呼び出すことは、基本的に画像の読み込みと同時に行われますが、画像が完全に読み込まれる前に終了します。これにより、画像のデフォルトスタイルによって中央画像機能の副作用が上書きされ、結果として画像がボックスの中央に配置されなくなります。js関数の実行を遅らせる

私はこれを解決するために中心画像機能の実行を遅らせることができるのだろうかと思っています。どの人がjs関数の実行を遅らせるか教えてください。どうもありがとう。

答えて

0

setTimeoutを使用して関数の実行を延期することはできますが、画像がロードされたときに聴くことができるので、それはあなたが望むものとは思えません。

if(image.complete) { 
    // already finished loading 
}else{ 
    image.onload=function() { 
     // loaded 
    }; 
} 
+0

私は知りませんが、オンロードを設定するとき競合状態がありますか?つまり、image.onloadが割り当てられる直前にイメージのロードが完了します。これは物事を混乱させるだろうか?その場合は、onload関数を割り当てた後に別のimage.completeチェックが必要ですか? –

+0

@trinithis:私はそれが起こる可能性はないと思う。 JavaScriptはシングルスレッドであり、このコードは同期的であるため、このコードが完了するまで他のことは起こり得ないと思います。このコードの実行中に画像の読み込みが完了すると、このコードの実行が終了した後にイベントが発生します。 – RightSaidFred

+0

JSがシングルスレッドの間は、ページローダーが同じスレッドを共有していない可能性があります。 –

0

あなたはすべての画像の後にコードを実行するために切り取ら次のコードを使用することができるJavaScriptライブラリjQueryを使用している場合img

<img src="<>" onload="centerImage()" /> 
0

onloadイベントに「中央イメージ」機能を呼び出しますロードされている:

代わりに「ウィンドウ」(ページ上のすべてのイメージがロードされている)の
$(window).load(function(){ 
    //initialize after images are loaded 
}); 

、あなたはまた、直接私を選択することができます魔法使い。

関連する問題