2011-10-20 15 views
0

通常の流れは、JavaScriptでDOMを操作することです。たとえば、openDatabaseのexecuteSqlトランザクションからのコールバックがあります。コールバックはDOMを操作して結果をdivに追加します。JavaScriptによるページの一時停止

しかし、ページが正しく読み込まれる特別なケースがあります。はい、そうです - 私はtotoでフレーズを使用しました。

Q:コールバックがコールバックされるまで、JavaScriptがページの読み込みを一時停止する方法はありますか?

$( 'body')の代わりにdocument.writeを使用する必要があると思います。

+0

あなたが禁止されるべきである "in toto"を無視して、私はその命令について不明です。 javascriptを実行する前に、HTML /ページリソースがロードされるのを待っていますか?または、サーバー側が終了するのを待つ必要がありますか? –

+0

あなたがここで何を求めているのかよく分かりません。すべてのajax呼び出しが完了するまでデータを表示しないようにしていますか?あなたのコンテンツはHTMLページに入っていますか、それとも動的にJSで記述していますか? –

+0

executeSqlがコールバックされると、divが設定されます。しかし、私の要件は、コールバックが発生したときにページが読み込まれた後ではなく、ページが読み込まれたときにdivに正しく入力されることです。 –

答えて

3

ページの読み込みが開始されたときに開始され、コールバックが完了するまでページが表示されないようにする場合は、コールバックを作成しているかのように聞こえます。

正確な状況は問わず、答えは簡単です。

イベントが終了する前にページをロードしたくない場合は、クライアントで非同期に開始するのではなく、サーバー上で同期して実行します。それが終わるまで、あなたは実際に何かを提供することはないので、何も現れません。

何らかの理由でこれができない場合は、すべてのコンテンツを「非表示」にして、コールバックが終了したら表示してください。

+0

jamietre、ありがとう。私が言及している特殊なケースは、html出力を読み込んで特定のIDを表示しているBluetoothデバイスです。問題は、JavaScriptが識別された要素内のテキストを変更した場合、Bluetoothデバイスが変更を認識することができないことです。 –

+0

クライアントはアプリケーションをローカルで実行する必要があるため、サーバー上で同期して実行することはできません。 –

+0

私はこのデバイスがどんな制限を持っているのかはわかりませんが、後者の考え方をして、最初は "display:none"としてレンダリングし、準備ができたらいつでもスクリプトから表示できますか?終わりには、ページの読み込みを「一時停止」する方法はありません。準備が整うまで(サーバーから)コンテンツを配信しないようにすることも、レンダリングしない方法でコンテンツを配信することもできます準備ができたらそれをレンダリングします。 "display:none"を使用するのが後者を行う最も簡単な方法ですが、エンコードしてJSONデータなどとして渡すこともできますが、なぜ必要なのか分かりません。 –

関連する問題