HTML jika gambar tidak ditemukan

99

Saya memiliki gambar di halaman HTML:

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

Jika gambar tidak ditemukan di server, itu menunjukkan kotak kosong yang jelek.

Saya ingin membuatnya sehingga jika gambar tidak ditemukan, tidak akan menampilkan apa pun atau beberapa gambar default lain yang saya tahu pasti ada di server.

Bagaimana ini bisa dilakukan?

David19801
sumber
2
Saya mendapatkan favicon, beberapa situs tidak memilikinya.
David19801
Dalam kasus tersebut, mungkin lakukan permintaan sisi server atau sisi klien terlebih dahulu untuk melihat kode status apa yang muncul kembali?
Pekka
Saya mencoba untuk tidak menggunakan js karena saya tidak suka situs web yang lambat dan ada terlalu banyak favicon untuk melakukannya di sisi server, itu akan membuat server dilarang.
David19801
9
siapa idiot yang bilang javascript akan membuat website lambat ??
Qchmqs
@Pekka 웃 Tentu saja Anda harus memiliki tautan yang berfungsi di situs. Bagaimana jika tautan tidak ada di situs Anda sendiri, tetapi di situs orang lain? Atau bagaimana jika mereka datang dari penyimpanan data jarak jauh dan membutuhkan waktu lama untuk mengunduh?
leetheguy

Jawaban:

269

Cara terbaik untuk menyelesaikan masalah Anda:

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

onerror adalah hal yang baik untukmu :)

Ubah saja nama file gambar dan coba sendiri.

Robby Shaw
sumber
4
Dikombinasikan dengan tag alt yang berguna, ini adalah cara yang bagus untuk memecahkan masalah!
mlibby
2
Luar biasa! solusi sempurna
Emanuele Pavanello
5
Jika Default.jpg tidak tersedia, Anda akan berakhir di loop tanpa akhir. Anda harus menambahkan cekif (this.src != 'Default.jpg')
dehlen
7
Untuk menghindari loop tak terbatas dan lebih baik dari if: this.onerror=null;seperti yang diberikan di bawah ini oleh @Sudarshan.
Guillaume F.
siapa pun yang bekerja dengan bereaksi, Anda dapat merujuk ke sini stackoverflow.com/questions/34097560/…
Earlee
18

Anda bisa mencobanya.

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

ini berhasil untuk saya. beri tahu saya tentang Anda.

Sudarshan Kalebere
sumber
5
Sepertinya berfungsi di semua browser utama. Cukup tukar default dan asli. Sehingga objek membuat gambar asli dan img default satu
Evgeny
10

Oke, tapi saya suka menggunakan cara ini, sehingga setiap kali gambar asli tidak tersedia, Anda dapat memuat gambar default yang mungkin merupakan smiley favorit Anda atau gambar yang bertuliskan Maaf! Tidak Tersedia, Tetapi jika kedua gambar hilang Anda dapat menggunakan teks untuk ditampilkan. di mana Anda juga bisa tersenyum. Lihat hampir semua kasus.

<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';">
Sudarshan Kalebere
sumber
1
Jangan gunakan alt untuk teks kesalahan jika Anda ingin halaman diurai dengan benar oleh mesin pencari. Mesin telusur dapat mengindeks data konten Anda dengan tidak benar.
varela
Apa yang <?=base_url()?>dilakukannya? Mengapa Anda secara mengejutkan menambahkan beberapa kode sisi server dan berbasis kerangka kerja?
Nico Haase
@NicoHaase url-nya dari kerangka php, nah Anda selalu dapat menulis url Anda sendiri untuk gambar, saya telah memberikan contoh yang tidak berarti Anda harus menyalin dan menempelkannya atau berkonsentrasi pada url itu, Anda memasukkan url Anda artinya. Untuk menjelaskan Anda harus memberi contoh jadi saya lakukan.
Sudarshan Kalebere
3

Di sini Periksa potongan kode di bawah ini yang, Dalam hal ini, saya salah mengeja nama gambar. Jadi, hanya karena itu ditampilkan gambar alternatif sebagai gambar tidak ditemukan (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="">

krishna amarghade
sumber
1

Cara biasa untuk menangani skenario ini adalah dengan menyetel alttag ke sesuatu yang bermakna.

Jika Anda menginginkan gambar default, maka saya sarankan menggunakan teknologi sisi server untuk menyajikan gambar Anda, disebut menggunakan format yang mirip dengan:

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

Dalam ImageHandler.aspxkode, tangkap kesalahan file-tidak ditemukan dan sajikan default.jpgsebagai gantinya.

Widor
sumber
1

Anda dapat menampilkan teks alternatif dengan menambahkan alt:

<img src="my_img.png" alt="alternative text" border="0" /> 
juankysmith.dll
sumber
mungkin kotak ini berasal dari div (atau tag lain) yang berisi img
juankysmith
alt tampaknya tidak berfungsi jika gaya tampilan img adalah 'blok'
JohnFlux
1

Saya menambahkan div induk di sekitar gambar dan menggunakan event handler onerror berikut untuk menyembunyikan gambar asli karena di IE masih ada gambar jelek yang tidak ditemukan gambar yang ditampilkan setelah menggunakan atribut 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>
Patrick Koorevaar
sumber
1

Sebagai alternatif, jika gambar tidak ada - tunjukkan apa-apa. (apa yang saya cari)

Anda dapat menukar fungsi dari jawaban Robby Shaw di atribut "onerror" menjadi "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">

Bim
sumber
0

Coba gunakan border=0di imgtag untuk menghilangkan kotak jelek.

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

Aziz Shaikh
sumber
0

Saya ingin menyembunyikan ruang yang ditempati oleh <img>tag jadi ini berhasil untuk saya

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

Divyanshu Jimmy
sumber
0

Jika Anda menginginkan gambar alternatif daripada teks, Anda juga dapat menggunakan 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";
}
stephen komu
sumber
0

cara sederhana untuk menangani ini, cukup tambahkan gambar latar belakang.

Vikas dhere
sumber
0

coba PHP

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

ini bekerja untuk saya bahwa jika Anda tidak ingin menggunakan atribut alt jika gambar rusak maka Anda dapat menggunakan bagian kode ini dan mengaturnya sesuai.

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

Yang ini berhasil untuk saya. menggunakan srcset. Saya baru saja mempelajarinya jadi saya tidak tahu apakah browser mendukungnya tetapi berhasil untuk saya. Cobalah dan nanti beri aku umpan balikmu.

 <img src="smiley.gif" srcset="alternatve.gif" width="32" height="32" />
stephen komu
sumber
-21

Solusi - Saya menghapus elemen tinggi dan lebar dari img dan kemudian teks alt berfungsi.

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

UNTUK

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

Terima kasih semua.

David19801
sumber
18
Jadi Anda memberi diri Anda "jawaban yang benar" tetapi Anda menjawab dengan jawaban yang tidak berhubungan dengan pertanyaan, GG WP.
Jean-Paul
oh orang ini menerima jawabannya sendiri dari semua jawaban yang benar ini hahaha, cara yang baik untuk menghargai diri sendiri.
Sudarshan Kalebere
Ini bukan pertama kalinya: D stackoverflow.com/a/12768098/1545917
Ghilas BELHADJ
Jawaban ini tidak memberikan gambaran alternatif.
Patrick Knott
@ david19801 peduli untuk menjelaskan?
P Satish Patro