Предварительная загрузка изображения ошибки в IE6-8

Страница, о которой идет речь: http://phwsinc.com/our-work/one-rincon-hill.asp

В IE6-8, когда вы нажимаете на самый левый эскиз в галерее, изображение никогда не загружается. Если вы щелкнете по иконке во второй раз, то она загрузится. Я использую jQuery, и вот мой код, который питает галерею:

$(document).ready(function() {
// PROJECT PHOTO GALLERY
var thumbs = $('.thumbs li a');
var photoWrapper = $('div.photoWrapper');

if (thumbs.length) {
    thumbs.click( function(){
        photoWrapper.addClass('loading');

        var img_src =   $(this).attr('href');

        // The two lines below are what cause the bug in IE. They make the gallery run much faster in other browsers, though.
        var new_img =   new Image();
        new_img.src =   img_src;

        var photo =     $('#photo');
        photo.fadeOut('slow', function() {
            photo.attr('src', img_src);
            photo.load(function() {
                photoWrapper.removeClass('loading');
                photo.fadeIn('slow');
            });
        });

        return false;
    });
}
});

Сотрудник сказал мне, что у него всегда были проблемы с объектом js Image(), и посоветовал мне просто добавить <img /> элемент внутри div установлен в display:none;, но это немного грязно для моих вкусов - мне понравилось использовать объект Image (), он содержал вещи красивыми и чистыми, без лишней добавленной разметки HTML.

Любая помощь будет оценена. Он по-прежнему работает без предварительной загрузки изображения, поэтому, если ничего не получится, я просто заверну предварительную загрузку в if !($.browser.msie){ } и назовите это днем.

1 ответ

Решение

Я вижу, вы уже исправили это, но я хотел посмотреть, смогу ли я заставить предварительную загрузку работать и в IE.

попробуйте изменить это

photo.fadeOut('slow', function() { 
  photo.attr('src', img_src); 
  photo.load(function() { 
    photoWrapper.removeClass('loading'); 
    photo.fadeIn('slow'); 
  }); 
}); 

к этому

photo.fadeOut('slow', function() { 
  photo.attr('src', img_src); 

  if (photo[0].complete){
    photoWrapper.removeClass('loading'); 
    photo.fadeIn('slow'); 
  } else {  
    photo.load(function() { 
      photoWrapper.removeClass('loading'); 
      photo.fadeIn('slow'); 
    }); 
  }
});
Другие вопросы по тегам