2012-10-29 107 views
1

我創建了一個包含大背景圖片的大塊的大頁面,所以我認爲最好的辦法是在後臺顯示預加載器並加載圖片並更新加載器(image 4 of 20 ,ecc)。我的問題是:當onload事件觸發我的加載器時,我仍然看到加載的圖像,這意味着它沒有完全加載。爲什麼會發生?任何想法?image onload trouble

這裏的頁面:

http://zhereicome.com/experiments/statics/myascensor/#1-1

在此先感謝

nImages = $('.slide').length; 
loadedImgs = 0; 
var bgImages = ['img/bbb.png','img/bbb2.png','img/bbb3.png']; 

$('.slide').each(function(i){ 
    var curSlide = $(this); 
    var img = new Image(); 
    img.src = bgImages[ i % 3 ]; 
    img.onLoad = imageLoaded(img, curSlide); 
})  

function imageLoaded(img, curSlide){ 
    curSlide.css('backgroundImage', 'url(' + img.src + ')'); 
    loadedImgs++; 
    if(nImages == loadedImgs){ 
     $('#container').css('visibility','visible'); 
     $('#loader-cont').fadeOut(1000); 
    } 
    $('.loader-inner .title').text(loadedImgs/nImages); 
} 
+1

使用onready代替。 – NotGaeL

+0

另外,模式是img.onload = someFunc; _THEN_ img.src = someFile;在嘗試加載文件之前,您必須告訴它在文件加載時要執行的操作。如果圖像已被緩存,您可以很輕鬆地不會觸發onload事件。它可能「工作」(大部分),但它不是正確的方法。 – enhzflep

回答

1

你似乎有一些麻煩的window.onload和的document.ready:

$(document).ready(function(){ 
// This will be executed when the DOM is ready. 
}); 

$(window).load(function(){ 
// This will be executed when the whole document and all its 
// referenced items (style sheets, scripts, images, etc.) are loaded. 
}); 

但這已被問及之前和回答了很多,好多了:How can I create a "Please Wait, Loading..." animation using jQuery?

+2

感謝elcodedocle,但添加加載動畫並將其刪除窗口加載不是我正在尋找。我想要的是帶有百分比的加載屏幕。不管怎麼說,我解決這樣的: $(IMG).load(函數(){ curSlide.css( '和backgroundImage', 'URL(' + img.src + ')'); loadedImgs ++; 如果(nImages == loadingImgs){('#container').css('visibility','visible'); $('#loader-cont')。fadeOut(1000); } $('。loader- ('loading''+((loadedImgs/nImages)* 100)+'%'); }) –