2009-10-11 59 views
3

使用jQuery時,您在開始做東西之前等待DOM準備就緒。我的問題是與圖像。

有時圖像需要很長時間才能加載,而且通常不會。所以我想準備()基本上有一個超時。它會等待5秒鐘,如果這些選定的圖像沒有加載它將運行該功能。

這可能嗎?

回答

0

- 編輯:此答案不確定,只有幫助。

無視我。這是之後的圖片已加載。您想要在渲染後立即設置超時。在這種情況下,你會做些稍微不同的事情。在渲染每張圖片時,您會設置「啓動」超時,如果「加載」在5秒之前未取消,則啓動任何您想要執行的操作。

但是,可能存在的事件可能比可以以通用方式附加到的負載更早。不確定。

- 老:

事實上,先生,我認爲你應該能夠只連接到'IMG「負荷」事件。

可能是這樣的:

// not tested, completely made up 
$("img").load({ alert("foo"); }); 
8

我想你可能已經confued的document.ready與在window.onload

的window.onload

這之後,將觸發一個事件頁面已完成加載。所以這個功能將不適合你,你將需要等待所有圖像已經下載完畢(或超時)

的document.ready

這是DOM後,將觸發一個事件準備好了。這是瀏覽器實際構建頁面的時候,但仍可能需要抓取幾張圖片或Flash文件。這個函數將會是你所追求的,因爲DOM已經準備好在所有的圖像被下載之前被處理。

你可以在這個函數中設置一個計時器,等待5秒鐘,並檢查您是否已經下載所述圖像

further reading

示例代碼:

<script> 
    $(document).ready(function() { 
     var imagesLoaded = false; 
     var imagesTimer = setTimeout("alert('images failed to load')", 10000); 

     $("img.checkme").load(function(){ 
      imagesLoaded = true; 
      clearTimeout(imagesTimer); 
      alert('images loaded within 10 seconds') 
     }); 
    }); 
</script> 
+0

我會用window.onload事件清除超時。你想知道是否所有的圖像在超時之前完成加載,並且當所有的圖像加載完成後,window.onload會被觸發。 – 2009-10-12 07:44:36

0

我有一個jQuery plugin等待圖像在選擇器的上下文中下載,然後將觸發回調。

所以,你可以做...

$('body').waitForImages(function() { 
    // Images have loaded. 
});