Определенный HTML не хочет показываться / скрываться в IE. Зачем? - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть следующий HTML:

<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();
                }
            });

Почемуразве мой "оверлей загрузки" не отображается ни в одной версии IE при вызове AJAX?

РЕДАКТИРОВАТЬ: Да, он отлично работает в FireFox и Chrome.Эти вызовы AJAX могут занять от доли секунды до примерно 20 секунд.Предупреждающие сообщения отображаются, но HTML-код отсутствует.

Ответы [ 3 ]

1 голос
/ 13 февраля 2012

Попробуйте что-то вроде этого,

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

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

Смотрите это в действии, здесь ..

РЕДАКТИРОВАТЬ:

Вы также можете попробовать уменьшить частоту кадров анимации.

Использование jQuery.fx.interval = 50;

По умолчанию установлено значение 13 мс. Увеличение этого может уменьшить нагрузку на ресурсы процессора при использовании .fadeIn(). Но при настройке рекомендуется соблюдать осторожность. Подробнее здесь .

0 голосов
/ 22 марта 2012

Спасибо, ребята, я был просто очень смущен, так как мой оверлей был показан во всех браузерах, кроме IE, теперь это работает очень хорошо для всех браузеров, я интегрировал то же самое в страницу jsf, и это хорошо.

0 голосов
/ 13 февраля 2012

Потому что вы скрываете это полностью.

Он вызывается после обратного вызова в случае успеха / ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...