2013-11-15 60 views
0

我加載了一組圖像,並使用jQuery來測試它們何時完成。 1圖像顯示替代文字。我認爲沒有什麼大不了的只是測試一個錯誤,但錯誤永遠不會拋出。經進一步檢查,我發現readyState仍被認爲是「加載」。我不知道如何解決這個問題。圖像readyState總是「加載」

mycode的

$(document).ready(function(){ 
    setTimeout(evalImages,100); 
}); 
$('img').error(function(){ alert('test'); }); 

function evalImages(){ 
    var imgCount = $('.myContainer img').length; 
    var loaded=0; 
    for(var i =0; i < imgCount; i++){ 
     if($('.myContainer img').get(i).complete){ 
       loaded++; 
     } 
    } 
    if(loaded >= imgCount){ 
      ///My other logic here 
    }else setTimeout(evalImages,100); 
} 

正是由於這個圖片我已經打開了我的開發工具,做

$('.myContainer img').get(7).readyState 
"loading" 

,因爲它仍在加載,永遠不會完成,從來沒有錯誤,我不知道如何測試這個問題。

更新:我仍然不知道爲什麼這個圖像不會改變它的readyState,我很好奇,但作爲解決方案,我只是在400毫秒的時間延遲後透露所有圖像。

+1

錯字:使用'setTimeout',而不是'setTimeOut'。這應該會導致錯誤。 –

回答

0

您可以使用load事件

$(window).on('load', function(){ // ... }); 

或者,快捷

$(window).load(function(){ // ... }); 

相反的$(document).ready,所有的圖像後load事件觸發完全加載。此外,如果需要,您可以使用readyloadready事件將在load之前觸發。

+0

即使當我刪除所有JavaScript,加載頁面,等待5分鐘,打開開發人員窗口並手動選擇該元素的問題,readyState仍然沒有改變,因此不觸發事件。 – user13186

+0

不知道你做了什麼,檢查瀏覽器控制檯中的錯誤。 –