HTML, якщо зображення не знайдено


97

У мене є зображення на HTML-сторінці:

<img src="smiley.gif" alt="Smiley face" width="32" height="32" />

Якщо зображення не знайдено на сервері, воно відображає потворний порожній квадрат.

Я хочу зробити так, щоб, якщо зображення не знайдено, воно не відображало б нічого або якесь інше зображення за замовчуванням, яке я знаю, безумовно, на сервері.

Як це можна зробити?


2
Я отримую значки, на деяких сайтах їх немає.
David19801

У такому випадку, можливо, спочатку зробіть запит на стороні сервера чи клієнта, щоб побачити, який код стану повертається?
Pekka

Я намагаюся не використовувати js, тому що мені не подобаються повільні веб-сайти і там занадто багато значків, щоб зробити це на стороні сервера, це призведе до заборони сервера.
David19801

9
хто такий ідіот, який сказав вам, що javascript зробить сайт повільним ??
Qchmqs

@Pekka 웃 Звичайно, ви повинні мати діючі посилання на сайті. Що робити, якщо посилання є не на вашому сайті, а на чужому? Або що, якщо вони надходять із віддаленого сховища даних і завантажують час?
leetheguy

Відповіді:


265

Найкращий спосіб вирішити вашу проблему:

<img id="currentPhoto" src="SomeImage.jpg" onerror="this.onerror=null; this.src='Default.jpg'" alt="" width="100" height="120">

onerror це добре для вас :)

Просто змініть назву файлу зображення та спробуйте самі.


4
У поєднанні з корисним тегом alt це чудовий спосіб вирішити проблему!
mlibby

2
Дивовижний! ідеальне рішення
Емануеле Паванелло

5
Якщо Default.jpg недоступний, ви потрапите в нескінченний цикл. Вам слід додати чекif (this.src != 'Default.jpg')
dehlen

7
Щоб уникнути нескінченних циклів і краще ніж if: this.onerror=null;як подано нижче @Sudarshan.
Гійом Ф.

хто працює з зреагувати, ви можете звернутися тут stackoverflow.com/questions/34097560 / ...
Earlee

17

Ну ви можете спробувати це.

  <object data="URL_TO_Default_img.png" type="image/png">
   <img src="your_original_image.png" />
  </object>

це спрацювало для мене. дайте мені знати про вас.


4
Здається, працює у всіх основних браузерах. Просто поміняйте місцями за замовчуванням та оригінал. Тож цей об’єкт робить оригінальне зображення та зображення img за замовчуванням
Євген

10

Гаразд, але мені подобається використовувати цей спосіб, щоб, коли оригінальне зображення недоступне, ви могли завантажувати зображення за замовчуванням, яке може бути вашим улюбленим смайликом або зображенням, що пробачає! Недоступно, але у випадку, якщо відсутні обидва зображення, ви можете використовувати текст для відображення. де ви можете також ви смайлик тоді. поглянути майже охоплює кожен випадок.

<img src="path_to_original_img/img.png"  alt="Sorry! Image not available at this time" 
       onError="this.onerror=null;this.src='<?=base_url()?>assets1/img/default.jpg';">

1
Не використовуйте alt для текстів помилок, якщо ви хочете, щоб сторінка була правильно проаналізована пошуковими системами. Пошукові системи можуть неправильно індексувати дані вашого вмісту.
varela

Що робить <?=base_url()?>? Чому ви напрочуд додаєте якийсь код на базі сервера та фреймворк?
Ніко Хаасе,

@NicoHaase його url з php framework, ну, ти завжди можеш написати власну URL-адресу для зображення, я навів приклад, який не означає, що ти повинен копіювати та вставляти його або концентруватися на цій URL-адресі, ти додаєш свою URL-адресу, це означає. Для пояснення ви повинні навести приклад, як я це зробив.
Сударшан Калебере

3

Тут перевірте нижче фрагмент коду, який, у цьому, я пропустив написання назви зображення. Отже, саме через це він відображає альтернативне зображення як не знайдене зображення (404.svg).

<img id="currentPhoto" src="https://www.ccrharrow.org/Images/content/953/741209.pg" onerror="this.src='https://www.unesale.com/ProductImages/Large/notfound.png'" alt="">


1

Звичайним способом обробки цього сценарію є встановлення altтегу на щось значуще.

Якщо замість цього вам потрібне зображення за замовчуванням, я пропоную використовувати серверну технологію для обслуговування ваших зображень, яка називається за допомогою формату, подібного до:

<img src="ImageHandler.aspx?Img=Blue.jpg" alt="I am a picture" />

У ImageHandler.aspxкоді вловлюйте помилки, які не знайдено, і default.jpgзамість них подавайте свої .


1

Ви можете показати альтернативний текст, додавши alt:

<img src="my_img.png" alt="alternative text" border="0" /> 

можливо цей квадрат походить від div (або іншого тегу), що містить ваш img
juankysmith

alt, здається, не працює, якщо стиль відображення img є "блокувати"
user3342930

1

Я додав батьківський div навколо зображення і використовував наступний обробник події onerror, щоб приховати оригінальне зображення, оскільки в IE все ще було негарне зображення, яке не було знайдено після використання атрибута alt:

<div style=" width:300px; height:150px; float:left; margin-left:5px; margin-top:50px;">
        <img src='@Url.Content("~/Images/Logo-Left.png")' onerror="this.parentElement.innerHTML = '';" />
</div>

1

В якості альтернативи, якщо зображення не існує - не показуйте взагалі нічого. (що я шукав)

Ви можете поміняти функцію з відповіді Роббі Шоу в атрибуті "onerror" на "this.remove ()".

<img id="currentPhoto" src="SomeImage.jpg" alt='1' width="100" height="120">
<img id="currentPhoto" src="SomeImage.jpg" onerror="this.onerror=null; this.remove();" alt="2" width="100" height="120">


0

Спробуйте використати border=0в imgтегу, щоб негарний квадрат пішов.

<img src="someimage.png" border="0" alt="some alternate text" />


0

Я хотів приховати простір, який займає <img>тег, тому це спрацювало для мене

<img src = "source.jpg" alt = "" >


0

Якщо ви хочете альтернативне зображення замість тексту, ви також можете використовувати php:

$file="smiley.gif";
$alt_file="alt.gif";
if(file_exist($file)){
     echo "<img src='".$file."' border="0" />";
}else if($alt_file){
     // the alternative file too might not exist not exist
     echo "<img src='".$alt_file."' border="0" />";
}else{
  echo "smily face";
}

0

простий спосіб вирішити це, просто додайте фонове зображення.


0

спробуйте PHP

if (file_exists('url/img/' . $Image)) {
    $show_img_URL = "Image.jpg";
} else {
    $show_img_URL = "Image_not_found.jpg";
}

-1

це працює для мене, що якщо ви не хочете використовувати атрибут alt, якщо зображення розбивається, ви можете використовувати цей фрагмент коду та встановити відповідно.

<h1>
  <a> 
   <object data="~/img/Logo.jpg" type="image/png">
     Your Custom Text Here
   </object>
  </a>
</h1>

-2

Цей працював у мене. за допомогою srcset. Я щойно дізнався про це, тому не знаю, чи підтримують це браузери, але це мені вдалося. Спробуйте, а згодом поверніть мені свою стрічку.

 <img src="smiley.gif" srcset="alternatve.gif" width="32" height="32" />

-21

Рішення - я видалив елементи висоти та ширини img, а потім текст alt працював.

<img src="smiley.gif" alt="Smiley face" width="32" height="32" />

ДО

<img src="smiley.gif" alt="Smiley face" />

Дякую вам всім.


17
Отже, ви дали собі «правильну відповідь», але відповіли відповіддю, не пов’язаною із запитанням, GG WP.
Жан-Поль

о, цей хлопець прийняв власну відповідь із усіх цих правильних відповідей ха-ха-ха, хороший спосіб дорожити собою.
Сударшан Калебере

Це не перший раз: D stackoverflow.com/a/12768098/1545917
Ghilas Belhadj

Ця відповідь не дала альтернативного образу.
Патрік Нотт,

@ david19801 хочеш пояснити?
P
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.