2012-01-26 104 views
27

當我把img標籤我動態創建src屬性。有沒有測試的方式,如果將src(路徑在圖像的位置)實際上與JavaScript才能避免得到存在:看看IMG SRC的存在

enter image description here

+2

你可能要考慮使用一個服務器端腳本來檢查這是瀏覽器可以禁用JavaScript。 – rogerlsmith

+0

定義「實際存在」。由於跨域來源策略,您將無法檢查瀏覽器使用Javascript從遠程站點檢索的圖像,因此您要求的內容可能不可行。您可以將URL發送到服務器並讓它下載文件,但從安全角度來看這是一個壞主意。 – Borealid

+0

我找到了這篇文章。它應該幫助你。 http://www.irt.org/script/52.htm –

回答

58

可以使用error事件:

var im = document.getElementById('imageID'); // or select based on classes 
im.onerror = function(){ 
    // image not found or change src like this as default image: 

    im.src = 'new path'; 
}; 

在線版本:

<img src="whatever" onError="this.src = 'new default path'" /> 

或者

<img src="whatever" onError="doSomething();" /> 

<img>標籤支持這些事件:

  • abort(onAbort)
  • error(onError的)
  • load(的onLoad)

更多信息:

+0

我在其他論壇看到,它不能在IE中工作,是正確的嗎? –

+0

@Mr:適用於我:http://jsbin.com/egohud – Sarfraz

+0

對,謝謝!可能更早的版本,誰知道xD感謝。 –

10

可以使以前的ajax調用(與head方法),並看到服務器返回代碼 或者您可以使用onerror事件改變網址或者隱藏它,例如

<img src="notexist.jpg" onerror="this.style.visibility = 'hidden'"> 

(我用內嵌屬性只是爲了解釋的想法)

+0

非常棒的例子。奇蹟般有效。 –

0

你接近這個錯誤的方式。
當您生成與服務器端腳本你的鏈接,檢查那裏的文件是否存在(通過在PHP中使用file_exists()爲例)。

你不應該依賴於JavaScript時,你可以在服務器端做的,如JavaScript可以改變和殘疾人。

問問自己,你是如何產生的src=屬性,並檢查那裏的文件是否存在,並提供一種替代方法。

4

如果動態創建SRC使用JavaScript,你可以使用這個:

var obj = new Image(); 
 
    obj.src = "http://www.javatpoint.com/images/javascript/javascript_logo.png"; 
 

 
if (obj.complete) { 
 
    alert('worked'); 
 
} else { 
 
    alert('doesnt work'); 
 
}

+1

圖像存在於以下路徑中,但是當我運行代碼片段時,它顯示'沒有工作'。是因爲'同源的政策'嗎? – yalpertem

+0

這是因爲,obj.complete返回false。代碼立即執行。而國家還沒有完成。所以它總是去其他塊 –