Javascript Проверить источник изображения загружен - PullRequest
0 голосов
/ 18 января 2010

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

Я пробовал решение, основанное на этом вопросе , однако я не использую jQuery, поэтому принятое решение мне бесполезно, поэтому пробую 2-е решение, которое в значительной степени работает, но не не кажется (если это имеет смысл?). Я могу заставить его протестировать второе нужное нам изображение, но тогда оно, похоже, не вызывает событие onload снова.

function topTenImages(){
 var topTenDiv = document.getElementById('toptenimg');
 var topTenImg = new Image();
 var ac = "tryout";
 var imageOrder = new Array(
  "/images/codespec/banners/"+ac+"_topten.gif",
  "/images/codespec/banners/"+ac+"_topten.jpg",
  "/images/banners/default_topten.png",
  "/images/banners/default_topten.jpg"
 );
 var errorCnt = 0;
 topTenImg.src = domainResources+imageOrder[errorCnt];
 topTenImg.onLoad = new function(){
  if(!checkImage(topTenImg)){
   if(errorCnt < imageOrder.length){
    var io = imageOrder[++errorCnt];
    topTenImg.src = domainResources+io;
   }
  }
 }
 topTenDiv.appendChild(topTenImg);
}

Да, я знаю, что мы могли бы сделать это на стороне сервера с помощью php / perl / et al, но мы пытаемся ограничить наши исходящие заголовки, так что, похоже, это лучший способ сделать это. (Альтернативы приветствуются). Моя другая мысль заключалась в том, чтобы обернуть его в цикл for в массиве и каждый раз создавать новый объект. Но это, казалось, имело больше смысла.

Спасибо, Psy

1 Ответ

2 голосов
/ 18 января 2010

Это должно ответить на ваш вопрос: http://www.thefutureoftheweb.com/blog/image-onload-isnt-being-called Вам просто нужно сначала установить onLoad.Надеюсь, это сработает:

 topTenImg.onLoad = function(){
  if(!checkImage(topTenImg)){
   if(errorCnt < imageOrder.length){
    var io = imageOrder[++errorCnt];
    topTenImg.src = domainResources+io;
   }
  }
 }
 topTenImg.src = domainResources+imageOrder[errorCnt];
...