2013-02-03 35 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。