Есть ли способ не отображать заполнитель изображения, если изображение не найдено? У меня есть изображения, загруженные автоматическим потоком, и для некоторых элементов изображения есть, а для некоторых нет. Итак, если изображения нет, я хотел бы отобразить собственный заполнитель.
Как предотвратить отображение заполнителя изображения, если изображение не найдено?
comment
Это действительно зависит от того, как вы загружаете изображения через Javascript. Например, если вы используете данные JSON, возвращаемые с сервера, вы можете просто проверить, является ли URL-адрес изображения пустым, и установить для него другой «известный» (по умолчанию) URL-адрес.
- person Dan Esparza   schedule 06.08.2011
Ответы (3)
Я нашел ответ здесь
Этот кусок кода отлично работает!
function onImgErrorSmall(source)
{
source.src = "/images/no-image-100px.gif";
// disable onerror to prevent endless loop
source.onerror = "";
return true;
}
И затем назовите это так:
<img src="/images/19013_small.jpg" alt="" onerror="onImgErrorSmall(this)" />
person
bobek
schedule
08.08.2011
Или вы можете просто сделать $(source).remove() чтобы избежать дополнительного HTTP-запроса для этого другого изображения.
- person Arman Bimatov; 01.03.2014
попробуй это:
var tester=new Image()
tester.onload=function() {createPlaceHolderForImage(); }
tester.onerror=function() {handleError(); }
tester.src="http://www.temp.com/image.jpg"
функция onload вызывается, если изображение существует, в противном случае вызывается handleError
person
blejzz
schedule
05.08.2011
Не уверен, в какой форме находится фид, который вы используете, но просто убедитесь, что событие ошибки прикреплено к изображениям ДО того, как они попытаются загрузиться. Если интеграция выполняется на серверной части, вам может потребоваться указать URL-адрес src в атрибуте, отличном от «src». Затем с помощью JS вы можете прикрепить событие ошибки, а затем вставить URL-адрес src в атрибут src. Удачи! :)
- person Dygerati; 06.08.2011
это просто пример кода, чтобы продемонстрировать, как это можно решить. я не говорю, что это лучший способ: P
- person blejzz; 06.08.2011
Вот пример использования jQuery, это также можно сделать в JavaScript:
<script type="text/javascript">
$(document).ready(function(){
$("img").each(function(){
var imgObj = $(this);
var img = new Image();
img.onerror=function(){ imgObj.attr('src','placeholder.gif'); }
img.src = imgObj.attr('src');
});
});
</script>
<ul>
<li><img src="blah.gif" /></li>
<li><img src="blah.png" /></li>
<li><img src="http://www.google.com/intl/en_com/images/srpr/logo2w.png" /></li>
</ul>
Этот код будет просматривать каждое изображение и проверять, существует ли оно. Если он не существует, он заменяется изображением «placeholder.gif».
person
RobB
schedule
05.08.2011
Кажется, у меня возникли проблемы с редактированием сообщения в настоящее время, но вы можете увидеть рабочий пример по адресу: jsfiddle.net/Z7EbP а>
- person RobB; 06.08.2011
Что ж, отлично работает. Спасибо. Однако мне не разрешено использовать jQuery.
- person bobek; 07.08.2011