Я думаю, что у меня есть это: Когда DOM загружен (или даже на window.load
случае — в конце концов, вы хотите, чтобы это сделать, когда все изображения являются полными, как они собираются получить), вам могут ретроактивно проверять, что изображения в порядке, создав один новый элемент img
, подключив его события load
и error
, а затем совершая циклический переход через захват src
с каждого из ваших снимков в голову. Что-то вроде кода ниже (live example). Этот код был просто отключен, это не качество производства —, например, вам, вероятно, понадобится тайм-аут, после которого, если вы не получили ни load
, ни error
, вы принимаете ошибку. (Вы, вероятно, придется заменить клетчатой изображение для обработки, надежно.)
Эта техника предполагает, что повторное использование src
делает не перезагрузить образ, который я думаю, является достаточно надежным предположение (это, безусловно, легко testable), потому что этот метод был использован для предварительной обработки изображений навсегда.
Я тестировал нижеследующее в Chrome, Firefox и Opera для Linux, а также IE6 (да, действительно) и IE8 для Windows. Работал.
jQuery(function($) {
var imgs, checker, index, start;
// Obviously, adjust this selector to match just your headshots
imgs = $('img');
if (imgs.length > 0) {
// Create the checker, hide it, and append it
checker = $("<img>").hide().appendTo(document.body);
// Hook it up
checker.load(imageLoaded).error(imageFailed);
// Start our loop
index = 0;
display("Verifying");
start = now();
verify();
}
function now() {
return +new Date();
}
function verify() {
if (!imgs || index >= imgs.length) {
display("Done verifying, total time = " + (now() - start) + "ms");
checker.remove();
checker = undefined;
return;
}
checker[0].src = imgs[index].src;
}
function imageLoaded() {
display("Image " + index + " loaded successfully");
++index;
verify();
}
function imageFailed() {
display("Image " + index + " failed");
++index;
verify();
}
function display(msg) {
$("<p>" + now() + ": " + msg + "</p>").appendTo(document.body);
}
});
Live example
http://stackoverflow.com/questions/92720/jquery-javascript-to-replace-broken-images – dmp
Благодаря @danp. Я действительно видел эту страницу раньше, но отклонил ее, потому что она в основном связана с загрузкой изображений динамически. Тем не менее, ответ @ Devon (не принят) с предлагаемой модификацией в комментариях @Sugendran дал мне то, что я был после. Я бы никогда не нашел его без этой ссылки, поэтому спасибо! – Andrew
добро пожаловать! обычно есть что-то в архиве SO, если вы ткнете :) рад, что это сработало. – dmp