0

iCanHaz.js を使用して画面を切り替えていますが、新しいコンテンツの読み込みが完全に完了したら起動する関数が必要です。以前は setTimeout を 0 にして呼び出しを非同期にすることでこれを行うことができましたが、多くの画像を含むページでは、これはすぐにはヒットしないようです。

function show_page(){
   document.getElementById('container').innerHTML = ich.artworks({
      variables : variables
   });
   window.setTimeout(function(){
       var midWidth = (document.body.offsetWidth/2) - window.innerWidth / 2;
      var midHeight = (document.body.offsetHeight/2) - window.innerHeight / 2;
      scrollTo( midWidth, midHeight);
   }, 0);
}

高さがわかるまでこの関数を遅らせるにはどうすればよいですか? 高さがわかっていても、ページの現在の高さより下のポイントまでスクロールできないため、画像の高さが不明な場合は、画像が読み込まれるまで待たなければなりません。

4

2 に答える 2

0

問題の同様のケースがあります:

jquery html() への変更がいつ終了したかを知るにはどうすればよいですか?

提案された解決策は、HTML レンダリング後にコードが実行されるように 1 (0 ではない) のタイムアウトを追加することです。これは、JavaScript の単一スレッドがそのレンダリング処理を完了した後にタイムアウトしたコードが実行されるためです。

あなたのケースでうまくいくことを願っています。

于 2013-02-27T16:21:40.000 に答える
0

テンプレートベースのアプローチを少し変更する必要がありますが、を使用して画像を作成する場合new Image()は、onloadイベントを使用してすべての画像がいつ読み込まれたかを判断し、寸法を設定できます。

于 2013-02-27T16:18:31.900 に答える