2011-12-04 86 views
0

我寫了一個函數在盒子的中心顯示圖像。但是,當圖像加載時,它會帶有一些默認樣式,包括位置信息。調用中心圖像函數基本上與圖像加載同時發生,但在圖像完全加載之前完成。這會導致中心圖像功能的副作用被圖像的默認樣式所過度,因此圖像不會放置在方框的中心。延遲執行一個js函數

我想知道是否可以延遲執行中心圖像函數來解決這個問題。任何人告訴我如何推遲js函數的執行?非常感謝。

回答

0

您可以使用setTimeout延遲功能的執行,但我不認爲這是您想要的,因爲您可以偵聽圖像何時加載。

if(image.complete) { 
    // already finished loading 
}else{ 
    image.onload=function() { 
     // loaded 
    }; 
} 
+0

我不知道,但是在設置onload時會不會出現競爭狀態?也就是說,圖像在image.onload被分配之前完成其加載。這會搞砸了嗎?如果是這樣,在分配onload函數之後是否應該有另一個image.complete檢查? –

+0

@trinithis:我懷疑可能發生。 JavaScript是單線程的,而且這段代碼是同步的,所以我認爲在代碼完成之前,別的事情都不會發生。如果在代碼運行時圖像完成加載,則此代碼執行完畢後會發生該事件。 – RightSaidFred

+0

只是,雖然JS是單線程的,但頁面加載器可能不共享相同的線程。 –

0

呼籲onload事件的img

<img src="<>" onload="centerImage()" /> 
0

「中心圖像」功能,如果您使用的是jQuery JavaScript庫,你可以將所有的圖像後,用剪斷運行代碼下面的代碼已加載:

$(window).load(function(){ 
    //initialize after images are loaded 
}); 

而不是「窗口」(頁面上的所有圖像已加載),您也可以直接選擇一個我法師。