Я пытался заставить это работать, и не достиг 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