2013-05-28 52 views
2

我正在開發一個網站,我必須將未找到圖像的src設置爲錯誤圖像。IE上的圖像加載事件

方法.load()和.error()在IE中除外。然而

Issue with IE not calling JQuery .load() function on page refresh - traced to image caching

添加查詢字符串的形象,總是從服務器和.load()和.error(加載它)方法可以正常運行,: 我一直在尋找,我發現這該網站太大了,我真的無法每次從服務器加載站點中的所有圖像,而無需從緩存中加載它。

任何想法如何使工作這種方法,每次沒有從服務器加載圖像的IE瀏覽器,或其他方式來檢查圖像是否已正確加載或不在IE中工作?

在此先感謝

+0

你試過的代碼是什麼? – PlantTheIdea

+3

獲得加載事件以在緩存圖像上始終觸發的唯一方法是在設置src之前綁定加載事件。 –

回答

1

這是一個非常老的錯誤,實際上已經修復除IE外的現代瀏覽器。 如果圖像是從緩存中獲取的,則它們不會觸發onload事件。

但有是由每一個誰試圖在javascript幾年前:)

圖片DOM元素有一個屬性.complete指示圖像是否已裝入創建一個圖片庫的人熟知的一種解決方法或不。您可以通過腳本加載來檢查此屬性。如果圖像在緩存中img.complete將在加載頁面後立即返回true:

$('img').each(function(){ 
    //this code will not run in IE if image is in the cache 
    $(this).on('load', function(){ 
     checkImage(this); 
    }); 

    //this code will run if image is already in the cache 
    if (this.complete) checkImage(this); 
}); 

function checkImage(){ 
    //your code for checking image 
} 
+0

嘿,謝謝對於快速的答案, 我發現這一點,工作正常,但有些頁面有一些Ajax結果,並且圖像在頁面加載javascript後呈現,並且在這種情況下完成總是爲false – Pablo

+0

剛剛在IE瀏覽器,如果你在javascript IE中動態創建圖像,總是會觸發onload事件。你介意顯示你的代碼示例嗎? – claustrofob

0

您是否有權限訪問服務器?一個更好的方法可能是使用.htaccess將圖像的所有請求重寫爲PHP腳本,然後如果圖像未找到,則提供圖像未找到圖像

+0

嘿,謝謝你的答案,遺憾的是服務器是與IIS運行的Windows:/ 沒有在服務器上運行的Apache – Pablo

+0

在IIS上也可以,儘管我會接受@claustrofob留下的答案 –