2012-08-02 46 views
0

在某些條件下,不同的背景圖像加載:確定身體的背景圖片(CSS)是否已經被加載

$('body').css('background','url(image.png)'); 

有沒有辦法來確定背景圖像是否已加載?當圖像被加載時,我需要執行一個函數。

+0

你可以添加一個'Image'元素和'src =「image.png」'並附加一個'onLoad'處理函數。瀏覽器只會載入一次圖像,所以如果在設置了background-image屬性之前創建了Image元素,你應該可以使用onLoad處理函數。未經測試,但:( – jensgram 2012-08-02 07:15:20

+1

已發佈的答案可能對大多數情況下正常工作,但要注意圖像的「加載」事件有一些注意事項。[閱讀](http://api.jquery.com/load-event/ )(向下滾動到「使用圖像時加載事件警告」部分) – 2012-08-02 07:19:48

+0

@FabrícioMatté注意事項相當令人不安,但我使用本機onload,即'img.onload = function(){}'Is比使用jQuery的'.load()'更安全嗎? – Obay 2012-08-02 07:55:07

回答

2

您可以將圖像加載到一個隱藏<img>標籤和分配onload處理程序的標籤。在onload處理程序中,可以填充正文的背景圖像(因爲圖像現在位於瀏覽器緩存中,所以應該或多或少地立即發生),然後運行自定義代碼。

var hiddenImg = new Image(); 
hiddenImg.onload = function(){ 
    $('body').css('background','url(' + this.src + ')'); 
    your_custom_onload_code(); 
}; 
hiddenImg.src = 'image.png'; 
1
var img = new Image(); 
img.onload = function() { $('body').css('background','url(image.png)'); }; 
img.src = src;