2011-08-17 73 views
4

我需要添加一個.load函數的圖像,但是,我不希望這個函數添加如果圖像已被緩存,主要是因爲在.load函數我淡入圖像並隱藏加載指示器。檢查圖像是否已經緩存與jQuery

如果圖像已被緩存,我不需要這些。有沒有辦法檢查它是否在緩存中?

感謝, 韋斯利

+1

你不必擔心這個問題。根據瀏覽器的不同,如果圖像被緩存,您的載入處理程序不會觸發,或者它會很快呈現任何可見的效果。 – Mrchief

+0

[加載後:檢查圖片是否在瀏覽器緩存中]的可能重複(http://stackoverflow.com/questions/2446740/post-loading-check-if-an-image-is-in-the-瀏覽器緩存) – Mrchief

+0

請參閱:http://stackoverflow.com/questions/3930952/javascript-preloading-images-check-whether-an-image-is-cached-loaded-to-prevent – Mrchief

回答

3

我很感謝剛纔提出的問題,但我一直在尋求解決同樣的問題,並在其他人遇到這個問題時,以下是我如何解決這個問題。

我使用了一個window.setTimeout(),延遲時間爲200ms,它調用了我的預加載器效果,並在正在加載的圖像的.load()事件中,它所做的第一件事是清除超時,所以如果加載是快速 - 不影響顯示,但如果圖像負荷超過200ms需要更長的時間,顯示預加載:

var imgTmr; 

imgTmr = window.setTimeout(function() {showLoading('zoomImage');}, 200); 

$("#zoomImage").load(function() { 
    window.clearTimeout(imgTmr); 
    hideLoading(); 
} 

$("#zoomImage").attr("src", "myLargeImage.jpg"); 

// The showLoading() and hideLoading() functions just display a wait graphic 
// the image being loaded in this instance has the id of zoomImage 
1

通常我只是假負載事件到位。即使圖像被緩存,也需要幾毫秒(取決於大小和計算機處理速度)從您的計算機加載。裝載仍然發生,而不是從同一個來源。因此,如果緩存或不緩存,您應該將加載事件綁定到它。

+0

實際上,我使用800毫秒的淡入效果來顯示加載的圖像(在圖庫中)。雖然我不希望這個緩存的圖像出於顯而易見的原因。 – Wesley