3

呼び出している関数がいくつかあり、それらには時間がかかります(ミリ秒)が、これらの関数が完了するまでページを表示したくありません。今のところ、ページが読み込まれ、スクリプトが最終的に完了することがわかります。

現在、bodyonloadの関数を呼び出しています。

また、私が抱えている可能性のある別の問題は、htmlコンテンツのdiv要素にアクセスする必要があるということですが、body onload関数(getElementById('somDiv')でアクセスできますか?

これがワークフローです。

  1. getElementById('someDiv')を呼び出して、ページから要素を取得します。

  2. 関数someFuncを呼び出します。この関数は本体にありますonload=someFunc()

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

  4. 関数が完了したら、ページをユーザーに表示します。

4

3 に答える 3

5

あなたができることは、div最初に でスタイル設定された にページのコンテンツを保持することですdisplay:none。次に、JavaScript コードが終了したら、 のスタイルを に更新します。たとえば、次のようになりますdivdisplay:block

<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>

次に、ボブはあなたの叔父です。スクリプトが終了するまで、ページの読み込みが遅れているようです。

于 2009-06-04T17:31:09.230 に答える
1

<body>タグのイベントで呼び出される関数は、DOM が読み込まれたときにのみ起動されますonLoad(ただし、JavaScript ファイルや CSS などの外部依存関係が読み込まれるのを待機しません)。タグのsomeFunc()イベントに) ページ内の要素が読み込まれました。ページにロードされている DIV にアクセスする場合は、関数が呼び出されたときに DIV がロードされていることを確認できます。<body>onLoadsomeFunc()

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

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

于 2009-06-04T17:43:04.533 に答える
0

本体のonLoad関数は、DOMの読み込みが完了するとトリガーされます。これは、すべてのHTML要素が完全に読み込まれたことを意味します。したがって、onload関数自体は、その実行自体がこれらのガイドラインに基づいているため、すべてがロードされて準備ができていると想定する必要があります。

于 2009-06-04T17:27:33.230 に答える