Обнаружение отмены загрузки изображения в Javascript - PullRequest
1 голос
/ 26 октября 2009

Я сейчас работаю над страницей, которая последовательно загружает несколько изображений, используя setTimeout и onLoad. Как правило, когда изображение завершает загрузку, запускается onLoad, который запускает загрузку другого изображения с помощью вызова setTimeout. К сожалению, если загрузка изображения прерывается по какой-то причине, например, при последующем вызове ajax, onload никогда не вызывается, и любые изображения, оставленные для загрузки, не загружаются. Есть ли способ в javascript, чтобы обнаружить эту ситуацию? Я попытался подключиться к onError и onAbort (на теге изображения), и ни один из них, кажется, не вызывается.

  queuePhotos: function(options)
{
  this.init();
  this.photo_urls = options.photo_urls;
  this.photo_size = options.size
  this.max_width = options['max_width'];
  this.max_height = options['max_height'];
  this.containers = options['containers'];
  yd = YAHOO.util.Dom;
  photo_tags = yd.getElementsByClassName('image_stub', 'div');
  for( i in photo_tags )
  {
    //create new image
    photo = new Image();
    this.queue.push( { tag: photo_tags[i], photo: photo } ); 
  }
  setTimeout(photoLoader.prepareNextPhoto, 1);
},

prepareNextPhoto: function()
{
  photo_tag_and_image = photoLoader.queue.shift();
  if(photo_tag_and_image)
  {
    YAHOO.util.Event.addListener(photo_tag_and_image.photo, "load", photoLoader.appendPhoto, photo_tag_and_image, photoLoader);
    photo_tag_and_image.photo.src = photoLoader.photo_urls[photo_tag_and_image.tag.id];
  }
},

Ответы [ 2 ]

3 голосов
/ 27 октября 2009

AJAX-вызов не должен отменять загрузку изображений. Здесь может быть что-то еще ...

Я не думаю, что вы можете легко обнаружить сбой загрузки изображения. Вы можете отключить таймер с определенным порогом тайм-аута, чтобы считать изображение неудачным, если истек таймер тайм-аута до того, как вы получите событие загрузки с изображения.

0 голосов
/ 27 октября 2009

Вы можете вызвать onload и onerror

myImage.onload = function(){ alert("loaded"); };
myImage.onerror = function(){ alert("whoops"); };

Eric

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