0

私が書いているbackbone.jsアプリケーションがあります。

ユーザーが[検索]ボタンを押すと、JavaScriptコードを続行させながら、loading.gif画像を(ブロックすることで)表示します。javascriptコードが完成したら、読み込んでいる画像を再表示します(表示をnoneに変更します)。

Firefoxで動作しているのを見ることができます。safari /およびchromeでは、JavaScriptコードが完了するまで、CSSの変更は適用されないため、検索の実行中にユーザーには読み込み中の画像が表示されません。

これを修正する方法はありますか?

ありがとう

4

2 に答える 2

0

画像の読み込みについても同様の問題がありました。これは、画像がブラウザに読み込まれていなかったためであり、何らかの理由で、他の処理が完了するまで画像が表示されなかったことが原因でした。私の場合、XHRが画像の読み込みや表示を何らかの形でブロックしていたと思います。メモリから、これは読み込み中の画像が最初に表示されたときにのみ発生し、その後は問題ありませんでした。読み込み中の画像を読み込むためにページhtmlに要素を追加してから、javascriptで非表示にしました。これで問題は解決しました。

于 2012-05-30T04:51:17.180 に答える
0

いくつかのことが奇妙だと思いますが、最初にあなたの質問に答えるには:

ほとんどのDOM/cssの変更は、実行中のJavascriptが戻るまで適用されません。これを回避するには、DOMを変更してから、残りのJavascriptコードを実行するためのタイムアウトを設定します。

元:

// make your image visible

function continuation() {
   // Put the javascript task that you need to execute here
}

// setTimeout will release execution control back to the browser so your CSS/DOM updates
// can be applied.  Once those updates are applied, continuation will be called
// by the browser and your remaining javascript can run.
setTimeout(continuation, 0); 

実行に非常に時間がかかり、読み込み中のgifを表示する時間さえあるjavascriptがあるのは奇妙に思えます。XHR(ajax)リクエストを実行している場合は、読み込み中の画像を表示するのが理にかなっていますが、それを実行している場合は、説明している問題が発生することはありません。あなたのこのjavascriptタスクは正確に何をしていますか?

于 2012-05-29T22:44:32.610 に答える