2013-02-03 62 views
0

我必須創建一個jQuery Dynatree。用我的JavaScript,隨着我的發展,我建立了這個Dynatree的不同節點。 JavaScript執行需要一定的時間。強制Chrome在JavaScript執行期間刷新顯示

在Firefox中,我得到了我想要的結果,即我看到我的Dynatree不斷增長,但在Chrome中,我必須等到JavaScript執行結束才能看到最終結果。在此之前,我只有一個空白頁面。

那麼你知道一種強制Chrome在JavaScript執行期間刷新顯示的方法嗎?

+0

將由setTimeout(function(){...},5)分隔的較小塊中的計算分散可能會有幫助。 –

+0

我已經嘗試過這種可能性。在我的循環中,對於每個構建的節點,我放置一個setTimeout。但它不會改變任何事情。 – Johann

+0

嘗試隱藏,然後顯示要觸發刷新時的元素,如:$('#parentOfElementToBeRedrawn')。hide()。show(0); – talkol

回答

1

我假設你正在使用一個循環來生成樹,因此創建一個函數,該函數根據傳遞的變量運行樹的增長的單個步驟,該變量是循環中的計數器。 ei:

<script> 

// what you probably have now 
// for(var i=0;i<100;i++){ 
//  dosomething 
// }; 


function step(i){ 
    dosomething 
    if(i<100){ 
     window.requestAnimationFrame(function(){step(i+1)}); 
    }; 
}; 
step(0); 

</script> 

您必須製作​​這樣的跨瀏覽器。

window.requestAnimationFrame=(function(){ 
    return window.requestAnimationFrame  || 
     window.webkitRequestAnimationFrame || 
     window.mozRequestAnimationFrame  || 
     window.oRequestAnimationFrame  || 
     window.msRequestAnimationFrame  || 
    function(callback){ 
     window.setTimeout(callback,1000/45); 
    }; 
})(); 

但是這應該在每次程序運行後重新呈現DOM。