Как определить, существует ли динамически загружаемое изображение? - PullRequest
1 голос
/ 31 марта 2011

Я динамически загружаю изображения с другого веб-сайта в элемент управления asp.net ListView следующим образом:

<ListView>
   <ItemTemplate>
      <img src='<%# string.Format("http://www.Website.com/Images/{0}", Eval("ImageName")) %>' />

Иногда изображения не существуют, и мне нужно изменить src на статическийпуть: src = "/ what / default.png".Какой самый быстрый способ проверить, существует ли изображение, и обновить src, если его нет (какие-либо возможности на стороне клиента через jQuery)?ListView разбит на страницы и может содержать результирующий набор из тысяч записей, поэтому я хотел бы только проверить изображения на текущей странице для оптимизации производительности.Спасибо!

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

используя jquery, вы можете сделать это следующим образом:

<img src="http://myimages.com/image.jpg" id="imgId" />

$('#imgId').load(function(){
 // ... loaded  
}).error(function(){
 // ... not loaded
 $(this).attr('src','/whatever/default.png');
});
0 голосов
/ 31 марта 2011

Я бы просто попытался загрузить изображения, и если вы получите ошибку, вернитесь к значению по умолчанию:

$('img').error(function()
{
  $(this).attr('src', '/whatever/default.png');
});

РЕДАКТИРОВАТЬ: Это решение может не работать, поэтому я предоставлю вам альтернативный. Когда изображение не загружается , теоретически оно имеет width из 0 (при условии, что вы не стилизовали теги <img>). Этот код может работать:

$('img').each(function()
{
  if ($(this).width() == '0px')
  {
    $(this).attr('src', '/whatever/default.png');
  }
});
...