2

ユーザーがサーバーへの呼び出しを待っている間、読み込みアニメーションを表示しようとしています。これを行うために、JQuery で div を表示しようとしましたが、Firefox でのみ機能します (IE や Chrome では機能しません)。

現在、BigSlowFuncCall には ac# しかありませんSystem.Threading.Thread.Sleep(10000);

ジャバスクリプト

function showloading() {
  $('#content').hide();
  $('#siteLoader').show();
}

function hideloading() {
  $('#content').show();
  $('#siteLoader').hide();
}

function CheckFields() {
   showloading();

   var jsHandler = new JsonHandler();
   jsHandler.BigSlowFuncCall();

   hideloading();
}

HTML

<div id="wrapper">
    <div id="siteLoader" style="display:none;" > 
        <div id='siteDetailLoader'> 
            <img src='img/loading.gif' border='0' alt='cargando'> 
            Por favor, espera<br /> <br /> 
        </div>
    </div> 

    <div id="content">
        <form>
          <p>
              /* Stuff */
          </p>
          <p class="submit"><input type="button" id="btn" onclick="CheckFields()" class="button-link" value="Descargar"/></p>    
        </form>
</div><!-- #content-->

</div><!-- #wrapper -->

これは Firefox では期待どおりに機能します (コンテンツを非表示にし、読み込みアニメーションを表示し、10 秒後に読み込みアニメーションを非表示にします) が、IE では、関数を終了した場合hideloading()と CheckFields 関数を終了した後にのみ表示されます。

このような単純なコードが Firefox では正常に動作するのに IE では動作しないのはなぜでしょうか?

alert()編集:後に を付けると、showloading()完全に機能することがわかりました。だから、私はこれを検索して見つけました: JavaScript dom 操作後に Internet Explorer で DOM の更新を強制しますこれhttps://stackoverflow.com/a/4271996/1824011を試しましたが、うまくいきませんでした。

4

2 に答える 2

0

役立つかもしれません。

function checkFileds()
{
    var overlay = jQuery('<div id="overlay" align="center"><img src="images/preloader_bajaj.gif" width="125" height="125"  style="margin-top:300px" /> </div>');
    overlay.appendTo(document.body)

.......your code.......

}
于 2013-01-31T12:15:59.390 に答える
0

何か不足していますか?hide 関数の $ 記号がありません。IE は、この種のエラーに非常に敏感です。コードを修正して試してください。

于 2013-01-31T12:16:17.643 に答える