jQuery проверяет, загружено ли изображение

Мне нужна помощь со следующим кодом, который не работает:

var timeoutID=0;
var currentImage=0;//first image is position 0 in arrImages array
var arrImages=[bla bla bla array of image URLs];
function slideShow()
{
   if($('#myImg').complete)//   <------- Here is where it fails as that's UNDEFINED.
   {
      //curentImage is a global var that remebembers the on-screen image array key
      var nextImage=currentImage+1;

      //arrImages is the array of image URLs
      if(nextImage>=arrImages.length){nextImage=0;}

      $('#myImg').attr('src',nextImage);

      clearTimeout(timeoutID);
      //Change image each second after previous image was loaded
      timeoutID=setTimeout("slideShow()",1000);
   }
   else
   {
      $('#myImg').load(slideShow);
   }
}

В основном я хочу менять src для #myImg каждую секунду, при условии, что счетчик запускается после загрузки изображения.

*Я ненавижу кнопку кода в текстовом редакторе для Stack Overflow!


person Francisc    schedule 23.03.2011    source источник
comment
Я предполагаю, что у вас проблемы с IE, верно? В IE img.complete и load большую часть времени не запускаются, если вы не вводите src после события присоединения.   -  person KJYe.Name 葉家仁    schedule 23.03.2011
comment
Ха-ха, может быть! И под этим я подразумеваю ДА. Не могли бы вы объяснить немного больше?   -  person Francisc    schedule 24.03.2011
comment
взгляните на этот пост в блоге. хотя фрагмент кода есть в mootools, но проблема есть. также читайте комментарии. davidwalsh.name/image-load-event   -  person KJYe.Name 葉家仁    schedule 24.03.2011
comment
Вы должны опубликовать это как ответ, kjy112.   -  person Francisc    schedule 05.04.2011


Ответы (2)


«complete» предназначен для собственного объекта javascript. поэтому вы должны получить объект javascript из jQuery. как,

$('#myImg')[0].complete

or

$('#myImg').get(0).complete
person Sang    schedule 23.12.2011

Если я правильно помню, изображение получает ширину и высоту при загрузке. Так что я думаю, вы могли бы проверить ширину, если изображение. И пока это 0, изображение не загружается.

person Domen Grabec    schedule 23.03.2011
comment
Привет, Домен. Это хороший совет, только я использую один и тот же контейнер изображений для последовательной загрузки изображений. Поэтому, как только первое изображение загружено, я думаю, оно всегда будет иметь ширину и высоту. Даже если я изменю src программно. - person Francisc; 05.04.2011
comment
@Domen Как насчет браузеров, которые устанавливают загружаемое изображение по умолчанию? Также как насчет браузеров, которые не загружают изображение полностью (появляются размытыми при загрузке). - person Omar Abid; 06.12.2012