У меня есть значок загрузки:
$(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 без везения. благодаря
В некоторых версиях 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 (это трудно сделать, не просматривая код).
fadeOut()
. Это просто скопировано из вашего кода. Я предполагаю, что вы можете удалить то, что я сделаю.