2013-02-27 98 views
0

我使用iCanHaz.js來交換屏幕,但是我需要一個函數在新內容完全加載完成時觸發。我之前可以通過使用setTimeout 0來使調用異步,但在具有大量圖像的頁面上,這似乎很快就沒有實現。onready/onload for document.innerHTML change

function show_page(){ 
    document.getElementById('container').innerHTML = ich.artworks({ 
     variables : variables 
    }); 
    window.setTimeout(function(){ 
     var midWidth = (document.body.offsetWidth/2) - window.innerWidth/2; 
     var midHeight = (document.body.offsetHeight/2) - window.innerHeight/2; 
     scrollTo(midWidth, midHeight); 
    }, 0); 
} 

如何才能延遲此功能,直到知道身高?即使我知道高度,我也無法滾動到低於當前頁面高度的點,所以如果我不知道它們的高度,我必須等待圖像加載完畢。

+0

您錯過了',毫秒);'在您的代碼中 – mplungjan 2013-02-27 16:05:37

+0

不是您正在尋找的答案,但是如果您在標籤中指定了圖片的高度和寬度,則將保留適當的空間量對於他們來說,即使他們還沒有加載,這可能會解決你的問題。 – rjmunro 2013-02-27 16:05:40

+0

@mplungjan yup ..這是一個錯誤在轉錄,而不是在我的代碼..修復。 – Damon 2013-02-27 16:08:07

回答

0

您必須稍微修改基於模板的方法,但如果使用new Image()創建圖像,則可以使用onload事件來確定何時加載所有圖像,然後設置尺寸。

0

有一個類似的情況中的問題:作爲超時代碼執行

How can I tell when changes to jquery html() have finished?

所提出的解決方案是增加的1(不爲0),用於代碼HTML呈現之後被執行時,一個超時在JavaScript獨佔線程完成其渲染的東西之後。

希望適合您的情況。

+0

不起作用 – Damon 2013-02-27 16:39:06