Resim bulunamazsa HTML


101

HTML sayfasında bir resmim var:

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

Görüntü sunucuda bulunamazsa, çirkin bir boş kare gösterir.

Bunu, bir resim bulunamazsa hiçbir şey göstermeyecek veya kesinlikle sunucuda olduğunu bildiğim başka bir varsayılan resim gösterecek şekilde yapmak istiyorum.

Bu nasıl yapılabilir?


2
Site simgeleri alıyorum, bazı sitelerde yok.
David19801

Bu durumda, hangi durum kodunun geri geldiğini görmek için önce sunucu tarafı veya istemci tarafı istekte bulunabilirsiniz.
Pekka

Yavaş web sitelerini sevmediğim için js kullanmamaya çalışıyorum ve sunucu tarafında bunu yapmak için çok fazla favicon var, sunucu yasaklanacak.
David19801

10
javascript'in web sitesini yavaşlatacağını söyleyen salak kim?
Qchmqs

@Pekka 웃 Elbette sitede işleyen bağlantılara sahip olmalısınız. Ya bağlantılar kendi sitenizde değil de başka birinin sitesinde ise? Ya da uzak bir veri deposundan geliyorlarsa ve indirmeleri biraz zaman alıyorsa?
leetheguy

Yanıtlar:


274

Sorununuzu çözmenin en iyi yolu:

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

onerror senin için iyi bir şey :)

Sadece görüntü dosyasının adını değiştirin ve kendiniz deneyin.


4
Kullanışlı bir alt etiketle birlikte bu, sorunu çözmenin harika bir yoludur!
mlibby

2
İnanılmaz! mükemmel çözüm
Emanuele Pavanello

5
Default.jpg mevcut değilse, sonsuz bir döngüye girersiniz. Bir çek eklemelisinizif (this.src != 'Default.jpg')
dehlen

7
Sonsuz döngüleri önlemek ve this.onerror=null;if'den daha iyi olmak için: aşağıda @Sudarshan tarafından verildiği gibi.
Guillaume F.

react ile çalışan herkes için buraya başvurabilirsiniz stackoverflow.com/questions/34097560/…
Earlee

19

Peki bunu deneyebilirsiniz.

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

bu benim için çalıştı. bana senin hakkında bilgi ver.


5
Görünüşe göre tüm büyük tarayıcılarda çalışıyor. Sadece varsayılan ve orijinali değiştirin. Böylece bu nesne orijinal görüntüyü ve varsayılan görüntüyü oluşturur
Evgeny

10

Tamam ama ben bu şekilde kullanmayı seviyorum, böylece orijinal görsel mevcut olmadığında en sevdiğiniz gülen yüzünüz veya Üzgünüz diyen varsayılan görselinizi yükleyebilirsiniz! Kullanılamaz, Ancak her iki görüntünün de eksik olması durumunda, görüntülemek için metin kullanabilirsiniz. o zaman nerede de gülümseyebilirsin. bir bakış neredeyse her vakayı kapsar.

<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
Sayfanın arama motorları tarafından doğru şekilde ayrıştırılmasını istiyorsanız, hata metinleri için alt kullanmayın. Arama motorları içerik verilerinizi yanlış bir şekilde dizine ekleyebilir.
varela

Ne yapar <?=base_url()?>? Neden şaşırtıcı bir şekilde sunucu tarafı ve çerçeve tabanlı kod ekliyorsunuz?
Nico Haase

@NicoHaase url'sini php çerçevesinden, her zaman resim için kendi url'nizi yazabilirsiniz, kopyalayıp yapıştırmanız veya bu url'ye konsantre olmanız gerektiği anlamına gelmeyen bir örnek verdim, yani url'nizi ekleyin. Açıklamak için örnek vermelisin, ben de yaptım.
Sudarshan Kalebere

3

İşte aşağıdaki kod parçacığını kontrol edin, Bu içinde resim adını yanlış yazdım. Yani, sırf bu yüzden alternatif görüntüyü bulunamadı görüntü olarak gösteriyor (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="">


2

Alternatif olarak, görüntü yoksa - hiçbir şey göstermeyin. (ne arıyordum)

Fonksiyonu Robby Shaw'un "onerror" özniteliğindeki yanıtından "this.remove ()" olarak değiştirebilirsiniz.

<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">


1

Bu senaryoyu halletmenin genel yolu, altetiketi anlamlı bir şeye ayarlamaktır .

Bunun yerine varsayılan bir görüntü istiyorsanız, görsellerinizi sunmak için aşağıdakilere benzer bir biçim kullanarak sunucu tarafı bir teknoloji kullanmanızı öneririz:

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

Kodda, ImageHandler.aspxdosya bulunamadı hatalarını yakalayın ve default.jpgyerine kendi hatanızı sunun .


1

Şunları ekleyerek alternatif bir metin gösterebilirsiniz alt:

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

belki bu kare img
juankysmith

img görüntüleme stili 'blok' ise alt çalışmıyor gibi görünüyor
JohnFlux

1

Görüntünün etrafına bir ana div ekledim ve orijinal görüntüyü gizlemek için aşağıdaki hata olay işleyicisini kullandım çünkü IE'de alt özniteliğini kullandıktan sonra hala çirkin bir görüntü bulunamayan görüntü gösteriliyordu:

<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>

0

Kullanmayı deneyin border=0içinde imgçirkin kare gitmesini sağlamak için etikette.

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


0

<img>Etiketin kapladığı alanı gizlemek istedim, bu yüzden bu benim için çalıştı

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


0

Metin yerine alternatif bir resim istiyorsanız, php'yi de kullanabilirsiniz:

$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

bunu halletmenin basit yolu, sadece bir arka plan resmi eklemeniz yeterlidir.


0

PHP'yi dene

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

-1

Benim için işe yarıyor, eğer alt özniteliği kullanmak istemiyorsanız, eğer görüntü koparsa, o zaman bu kod parçasını kullanabilir ve buna göre ayarlayabilirsiniz.

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

-2

Bu benim için çalıştı. srcset kullanarak. Bunu yeni öğrendim, bu yüzden tarayıcıların destekleyip desteklemediğini bilmiyorum ama benim için çalıştı. Deneyin ve sonra bana beslemenizi geri verin.

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

-22

Çözüm - img'nin yükseklik ve genişlik öğelerini kaldırdım ve ardından alt metni çalıştı.

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

KİME

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

Hepinize teşekkür ederim.


19
Yani kendinize "doğru cevabı" verdiniz ama soruyla ilgisi olmayan bir cevapla cevap verdiniz, GG WP.
Jean-Paul

oh bu adam tüm bu doğru cevaplardan kendi cevabını kabul etti hahaha, kendini sevmenin iyi bir yolu.
Sudarshan Kalebere


Bu cevap alternatif bir imaj sağlamadı.
Patrick Knott

@ david19801 açıklamak ister misiniz?
P Satish Patro
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.