мой значок загрузки не исчезает в ie8

0

У меня есть значок загрузки:

 $(document).ready(function () {
   var $img = $('<img>', {
     src: '../images/loader.gif',
     id: 'dvLoading',
     css: {
       position: 'fixed',
       left: '50%',
       top: '50%',
       margin: '-25px 0 0 -25px;',
       filter: 'inherit'
     }
   }).load(function () {
     $(this).fadeOut(2000);
   });
   $('body').append($img);
 });

однако иногда значок загрузки не исчезает в IE8. От проверки других сайтов люди говорили, что IE8 не работает хорошо с fadeOut, особенно если есть относительное позиционирование. Однако я использую фиксированное позиционирование. Есть ли что-нибудь, что может заменить фиксированное позиционирование и все еще есть значок в центре экрана? или есть лучшая работа для fodeOut() в IE8

Редактировать:

Я также попробовал добавить фильтр: inherit; к моему css без везения. благодаря

  • 0
    Какая версия jQuery? Есть ошибки в консоли?
  • 0
    без ошибок Я использую v1.9.1. Спасибо
Теги:
internet-explorer-8

1 ответ

1
Лучший ответ

В некоторых версиях IE вы должны быть абсолютно уверены, что обработчик .load() применяется до свойства .src. Если изображение находится в кеше браузера, IE может немедленно .src событие onload, когда .src свойство .src. Если это произойдет, событие загрузки может произойти до того, как вы присоедините обработчик .load(), и, таким образом, вы пропустите событие, и ваш код никогда не вызовет .fadeOut().

Решение состоит в том, чтобы сделать это за пару шагов, чтобы вы могли гарантировать, что обработчик .load() прикреплен до установки .src.

$(document).ready(function () {
    $('<img>', {
        id: 'dvLoading',
        css: {
            position: 'fixed',
            left: '50%',
            top: '50%',
            margin: '-25px 0 0 -25px;',
            filter: 'inherit'
        }
    }).load(function () {
        $(this).fadeOut(2000);
    }).attr("src", '../images/loader.gif')
      .appendTo(document.body);
});

Если есть вероятность, что у вас также есть проблема с вашим CSS в IE, то, пожалуйста, напишите рабочий jsFiddle, чтобы мы могли отлаживать его в более старых версиях IE (это трудно сделать, не просматривая код).

  • 0
    почему вы вызываете две функции fadeOut? Спасибо за ответ
  • 0
    @roshambo - я не знаю, почему у вас есть первый fadeOut() . Это просто скопировано из вашего кода. Я предполагаю, что вы можете удалить то, что я сделаю.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню