2013-09-22 2 views
0

У меня есть страница с большим количеством изображений. Мои изображения загружаются с внешнего сервера. Обычно этот сервер загружает tooooooooo медленно, поэтому моя страница остается загружаемой, пока внешний сервер не запустится снова. Я хочу поместить пустую картинку, загруженную у меня, когда внешний сервер отключен.Проверьте, не загружено ли изображение

Есть ли способ сделать что-то подобное?

if ($("img").load=false) { 
$("img").src="cantload.png"; 
} 

Большое вам спасибо, заранее!

+1

OnError событие должно сделать –

ответ

2

Если вы используете jquery, и этот фрагмент кода происходит до привязки изображения.

$("img").error(function() { 
    alert("Could not load image"); 
}); 

Если нет, то вы могли бы сделать что-то вроде этого, который всегда будет работать, но должны быть на каждом изображении:

<img src="image.gif" onerror="alert('Could not load image.')"> 
+0

Спасибо, я проверяя это! –

+1

Это будет работать только в том случае, если они уже не загружены ... – Itay

+0

@MMPP ya, который необходимо проверить на совместимость с полным кросс-браузером. Обычно привязывайте его перед установкой атрибута src изображения. EDIT: или использовать встроенный скрипт, как gillyb делает –

1

Если вы хотите, чтобы активировать эту функцию после того, как элементы уже в DOM вы можете использовать что-то вроде этого.

var defaultSource = 'cantload.png'; 

$('img').each(function() { 
    var originalSource = $(this).attr('src'); 

    $(this) 
     .attr('src', defaultSource) 
     .error(function(){ 
      $(this).attr('src', defaultSource); 
     }) 
     .attr('src', originalSource); 
}); 

Приведенный выше код привяжет внутреннюю функцию к обработке ошибок загрузки изображений, а затем заставит их перезагрузить. Фотографии, которые уже Reloaded не будет на самом деле перезагружается снова, но те, с ошибками будет вызывать обработчик ошибок и изменить source attribute в cantload.png

jsFiddle Demo

+2

Изменение изображения src в существующем src не работает во всех браузерах. Некоторые из них достаточно умны, чтобы понять это, и больше не будут инициировать событие «load». – gillyb

+0

Если я его помню, на chrome (версия ???) вам нужно установить пустой src, прежде чем повторно использовать оригинал src –

+0

Но установка пустого src также является плохой практикой, поскольку в некоторых браузерах ничто не может направить запрос на сайт. Правильный способ сделать это в этом случае, вероятно, установить изображение, которое вы знаете, что-то вроде «blank.gif», которое просто белое или прозрачное, а затем переключить его изображение, которое вы не уверены. – gillyb

Смежные вопросы