2011-10-15 62 views
1

我允許用戶在我的網站上提交圖片作爲縮略圖使用。縮略圖不會存儲在我的服務器上。有時候,其中一些非常慢。我怎樣才能刪除加載時間過長的那些?我能想到的唯一的事情是使用.load()或.error(),但這些事件甚至在圖像加載/失敗之前不會觸發。如何刪除使用JQuery加載速度太慢的圖像?

編輯:或者更好,我該如何暫時顯示加載.gif?

回答

1

你有沒有考慮過使用動畫GIF作爲包含div的縮略圖的背景?

1

您可以隨時對圖像進行編碼(即頁面中的標籤),以便使用某種「加載」圖像,這種圖像始終保持相同,可能會被緩存。然後,您可以將實際圖像加載到Image對象中。當「load」事件觸發時,您可以重新分配標籤的「src」屬性,以便顯示現在加載的圖像。

<!-- in the page --> 
<img class='slow' src='common_loading_image.png' data-real-image='the/real/image.png'> 

// JS code 
$(function() { 
    $('img.slow').each(function() { 
    var $img = $(this), real = new Image(); 

    real.onload = function() { 
     $img.src = real.src; 
    }; 
    real.src = $img.data('realImage'); 
    }); 
}); 

這依賴於過程的圖像被送達適當的緩存頭。如果圖像沒有被緩存,那麼你將不得不嘗試類似背景圖像的建議。

+0

爲什麼它不適用於未緩存的圖像? – memical

+0

重點在於將圖像存入緩存,以便隨後更新''標記的「src」屬性不會導致另一個HTTP請求。 – Pointy

0

你可以把一個裝浮子的實際圖像之上,而當負載(),隱藏載浮

0

我認爲最好的解決辦法,如果使用背景負載形象尖尖和馬蹄寫道。

但是,如果您真的想刪除它們,您可以處理所有圖像上的加載事件以標記下載的圖像。

使用計時器,您可以在x秒後檢查哪些圖像尚未加載並刪除它們。