2012-02-13 7 views
0

I次のようなHTMLがあります。特定のHTMLはIEで表示/非表示にしたくありません。どうして?

<div id="loading-overlay"> 
    <div id="loading-overlay-background"></div> 
    <div id="loading-overlay-content"> 
     Processing... 
     <br /> 
     <img src="@Url.Content("~/Content/img/ajax-loader.gif")" title="" alt="Please Wait" /> 
    </div> 
</div> 

とCSS:

#loading-overlay 
{ 
    position:fixed; 
    width:100%; 
    height:100%; 
    top:0; 
    left:0; 
    z-index:5000; 
} 
#loading-overlay-background 
{ 
    position:relative; 
    width:100%; 
    height:100%; 
    top:0; 
    left:0; 
    background-color:#000; 
    opacity:0.5; 
    filter:alpha(opacity=50); 
    z-index:5001; 
} 
#loading-overlay-content 
{ 
    position:fixed; 
    top:25%; 
    left:50%; 
    margin-left:-150px; 
    margin-top:-20px; 
    height:40px; 
    width:300px; 
    color:#fff; 
    text-align:center; 
    z-index:15002; 
} 

そして、ここでいくつかのJavaScript(jQueryの):

$.ajax({ 
       url: 'controller/action', 
       beforeSend: function() { 
        $('#loading-overlay').show(); 
       }, 
       success: function (data, textStatus, jqXHR) { 
       }, 
       error: function (xhr) { 
       }, 
       complete: function() { 
        $('#loading-overlay').hide(); 
       } 
      }); 

なぜ「ロード・オーバーレイではありませんが"どのAJAX呼び出しでIEのどのバージョンにも表示されますか?

編集:はい、FireFoxとChromeでうまくいきます。これらのAJAX呼び出しは、完了までにわずか数秒から約20秒かかることがあります。警告メッセージは表示されますが、HTMLは表示されません。

+0

AJAXコールの完了までにどれくらいの時間がかかりますか?それらが十分に速ければ、 '#load-overlay'要素は再び非表示になり、目立たないかもしれません。 –

+0

他のブラウザでも動作しますか? – Christoph

+0

私は、Ajaxがすぐに完了していると言います。 'show()'コールの後に警告が表示されているかどうかを確認してください。 – Henesnarfel

答えて

1

、アクションでhereそれを参照してください

beforeSend: function() { 
    $('#loading-overlay').show(1); 
}, 

complete: function() { 
    $('#loading-overlay').delay(500).hide(250); 
} 

、このような何かを試してみてください。..

EDIT:

また、アニメーションのフレームレートを下げてみてください。デフォルトでjQuery.fx.interval = 50;

を使用

が、これは13ミリ秒に設定されています。これを増やすと、.fadeIn()を使用してCPUリソースの負担を軽減できます。しかし、これを調整する際は注意が必要です。続きを読むhere

+0

それは登場するように見えるが、私は事実上それをはっきりと見るためにオフィスに着く必要がある。今すぐオフィスに行く。 – Dimskiy

+0

それは起こっていますが、beforeshendの.show()のように見えますが、すでにJSを成功の中で実行しているときに起動します。 – Dimskiy

+0

私はこの答えに基づいていくつかの仕事をしました。つまり、処理時間を短縮し、.hide()を.fadeIn(200)に変更するために、成功の中にコードを書き直しました。 IEが扱っているアニメーションとプレーンなCSSの変更(.show())の違いがあります。まだ理想的ではありませんが、ビジネスは例外です。現時点では、この問題は将来的には戻ってくるかもしれません。ありがとう! – Dimskiy

-2

完全に非表示にするためです。

成功/エラーコールバックの後に呼び出されます。

+0

それはajaxを送信する前に表示されるはずですが、それはajaxが終了した後に非表示になります – Henesnarfel

+0

ええ、彼はbeforeSendでそれを示しているので、彼はそれを隠します。 –

+0

私の間違った、十分に読まなかった –

0

IEを除いてすべてのブラウザでオーバーレイが表示されていたので、私はちょっと混乱しました。これはすべてのブラウザでうまく機能します。これをjsfページに統合しました。

関連する問題