2012-09-26 14 views
2

要確保文件是做的東西準備好之前,我做了以下內容:的JavaScript創建圖像和document.readyState

(function() { 
    var interval = window.setInterval(function() { 
     if("complete" === document.readyState) { 
      window.clearInterval(interval); 
      // Some stuff 
     } 
    }, 10); 
})(); 

如果在某個地方我的代碼創建一個圖像從JavaScript這樣的:

var image = new Image(); 
image.onload = function() { 
    // Some other stuff 
}; 
image.src = 'some_url'; 

我在document.readyState上執行的檢查也會等待「image」加載,還是隻是等待HTML代碼中存在的圖像,並且只會加載那些圖像?

在此先感謝。

回答

2

你不需要你的setInterval

​​:

在原稿載置過程結束

負載事件觸發。在 這一點上,文檔中的所有對象都在DOM中,並且所有圖像和子幀都已完成加載。

你可以簡單地做到這一點的靜態圖像包括:

window.onload = function() { 
    // Some stuff 
}; 

因爲這並沒有考慮到以後要創建的圖像,你可以這樣做:

window.onload = function() { 
    var image = new Image(); 
    image.onload = function(){ 
     // Some stuff 
    }; 
    image.src = 'some_url'; 
}; 
+0

請注意,如果連接偵聽器時'yourImage.complete'爲true,則'yourImage.onload'不會觸發。 – David

+0

@大衛是的。您通常在設置onload回調後設置src。我會編輯以防止您提到的錯誤。 –

+0

好的,謝謝,我認爲在文檔被加載100%之前,onload會被觸發(但爲什麼jQuery會以這種方式檢查它?)。我要試試這個。我的問題實際上來自混合了JavaScript/PHP的東西,這對調試來說太可怕了。我甚至不確定這個問題來自於圖像是否被加載...... – Virus721

0

在jQuery中,document.ready()函數在整個html頁面準備就緒時調用,或者我們可以說bind(以技術術語)。

您應該嘗試增加間隔時間。或者包含圖像加載回調來執行這些東西。

+0

javascript中沒有document.ready()函數。 –

+0

我想他是在談論jQuery就緒函數。 – Virus721

+0

是的。在jQuery中。這是我的錯誤。 – Rajnish