2009-06-04 13 views
3

私はいくつかの関数を呼び出していますが、時間がかかります(ミリ秒)が、これらの関数が完了するまでページを表示したくありません。今、私はページがロードされ、スクリプトが最終的に完了したことを知ることができます。Javascript:スクリプトが完了するまでbody onload関数を待機させてください

今、body onloadの関数を呼び出しています。

また、私が持っているかもしれ別の問題は、私は私のボディのonload機能(getElementByIdを(「somDiv」)?ここで

にワークフローであることを行うことができ、私はHTMLコンテンツでのdiv要素にアクセスする必要があるということです。

  1. ページから要素を取得するためにgetElementByIdを( 'someDiv')への呼び出しを行います。

  2. 機能someFuncを呼び出し、この関数はボディのonload = someFunc(である)

  3. someFuncが終了するまで待つ

  4. 機能が完了すると、ページを表示します。すべてのHTML要素が完全にロードされていることを意味 - DOMのロードが完了したときに

答えて

5

あなたができることは、最初にdisplay:noneと書かれたdivのページコンテンツを維持することです。次に、あなたのjavascriptのコードが終了すると、例えば、display:blockdiv上のスタイルを更新:次に

<html> 
    <head> 
     ... 
     <style type="text/css"> 
      html, body, #body { 
       height: 100%; 
       width: 100%; 
       padding: 0; 
       margin: 0; 
      } 
      #body { 
       display: none; 
      } 
     </style> 
     <script type="text/javascript"> 
      function myFunc() { 
       ... 
       getElementById('body').style.display = 'block'; 
      } 
     </script> 
    </head> 
    <body onload="myFunc();"> 
     <div id="body> 
      ... 
     </div> 
    </body> 
</html> 

ボブのあなたの叔父を:それはあなたのスクリプトが終了した後までロードを遅らせているようページが見えます。 <body>タグのonLoadイベントで呼び出され

0

体のonload関数がトリガされます。ですから、あなたのonload関数自体は、その実行がそれらのガイドラインの下にあるので、すべてがロードされ、実行準備が整っていると仮定するべきです。

1

機能のみDOMがロードされたとき(ただし、それは、このようなJavaScriptファイルとCSSロードするなどの外部依存関係を待たずに)発射されているので、あなたは確認することができ、その際、あなたのsomeFunc()<body>タグのonLoadイベントにアタッチされている場合)、ページ内の要素がロードされています。ページにロードされているDIVにアクセスしたい場合は、someFunc()関数が呼び出されたときにロードされていることを確認できます。

問題を解決するには、displayが最初にnoneに設定されているDIVでページのコンテンツをラップできます。ページが読み込まれると、someFunc()関数が呼び出されます。実行が終了したら、ラッパーDIVのdisplayblockに設定して、ユーザーに表示させることができます。

ただし、ページが読み込まれていることをユーザーに認識させ、JavaScriptが読み込まれている間に空白の画面を表示するだけではないことを確認してください。

+0

素晴らしいアイデアと優れた説明。私は他の人にコードのために答えを与えました。 –

関連する問題