2013-11-24 80 views
1

Im'試圖在html中加載圖像時顯示基本動畫。這是一個正確的方式來預加載圖像在Javascript/jquery(動畫)?

這是正確的方法嗎?

 //display the (small image) animation 
     var preloader = new Image(); 
     preloader.src = 'img/preload.gif'; 
     $('#myDiv').append(preloader); 

     //load big image and hide peload animation when finished 
     var img = new Image(); 
     img.onload = function() { $(preloader).hide(); preloader = null; } ; 
     img.src = 'img/bigImage.jpg'; 
     $('#myDiv').append(img); 

我不知道這是正確的:雖然它在我的瀏覽器,小動畫總是加載,即使大的圖像已經被加載並在高速緩存中。有沒有辦法去激活這個,或者想想或者用另一種方式來處理一個小動畫的圖像預加載?

感謝

+0

可以啓動100ms的超時,然後檢查圖像是否已經被加載。 – vorrtex

回答

2

以下是我會做:

var preloader = new Image(), 
    img  = new Image(), 
    div  = document.getElementById('myDiv'); 

img.onload = function() { 
    preloader = null; 
    div.innerHTML = ''; 
    div.appendChild(this); 
}; 

img.src = 'img/bigImage.jpg'; 

// if it's not in cache or not loaded (has no size), show the preloader 
if (! (img.complete || img.width+img.height > 0)) { 
    preloader.src = 'img/preload.gif'; 
    div.innerHTML = ''; 
    div.appendChild(preloader); 
} 
+0

的確很不錯!謝謝 – carmellose

+0

我只想指出,這樣做的好處是,它不會導致瀏覽器檢查圖像資源的緩存狀態,當你這樣做時,比如說,重新分配'src'屬性一個'img'到另一個URL。例如。 'var i = new Image(); i.src ='http:// path.to/img.jpg''。當我尋找解決方案時,這幫助了我。 – dougBTV

相關問題