2016-05-31 45 views
0

所以,我有以下js img var。JS檢查是否找不到img

//Where `img_src` is another variable which actual image file MIGHT or MIGHT NOT exist. 
var img_source = "/images/" + img_src; 
return '<img src="' + img_source + '">';  

因爲img_src可能會或可能不會提供,有時我得到404 Not Found錯誤。

如果沒有圖像,那麼我想執行另一個功能。

如何在這種情況下檢查圖像文件是否可用?

我試圖避免如果圖像不可用,一起顯示img屬性。謝謝!

+0

可能的重複:http://stackoverflow.com/questions/9022427/see-if-src-of-img-exists – Kelvin

回答

2

一個jQuery的方法是聽error事件:

var img = $("<img src='http://no-image.com/' />"); 

img.on('load', function(e){ 
    alert('Success!'); 
}).on('error', function(e) { 
    alert('ERROR!'); 
}); 

img.appendTo("body"); 

https://jsfiddle.net/j70oybvy/

在純JavaScript:

var img = document.createElement('img'); 

img.src='http://no-image.com/'; 

img.onload = function(e){ 
    alert('Success!'); 
}; 

img.onerror = function(e) { 
    alert('ERROR!'); 
}; 

document.body.appendChild(img); 

https://jsfiddle.net/j70oybvy/1/

+0

另一個好處是,如果您動態更改圖像的src屬性,處理程序將再次被調用。 – rcdmk

+0

這很不錯。謝謝。 ☺️ –

1

你可以像這樣使用後備img;

<img onerror="this.onerror=null; this.src='img/fallback.png'" /> 

要隱藏你可以這樣做這樣的元素;

<img onerror="this.onerror=null; this.style.display = 'none'" /> 
+0

謝謝你的答覆。如果圖像不可用,我試圖避免顯示img屬性。謝謝! –

+0

@steveKim請找到我更新的答案:) – Mark

+0

哈哈。你是對的。我本可以做到這一點。傻我。謝謝馬克。 ☺️ –