[問題] 瀏覽器畫面render的流程?

作者: LinLaoDa (LaoDa)   2015-05-05 18:42:14
最近在想一個有趣的問題,
$(function(){
for(var i=0; i< 10000; i++){
$(".test").append("<div>"+i +"</div>");
console.log($(document).height());
}
})
以上是一段javascript append 10000個 div的程式碼,
在append後馬上印出document的高,
不過在跑迴圈時,
畫面還沒有完成繪製,
可是他的高卻一直有在變化,
想請問這是為什麼呢?
繪製網頁跟執行javascript是同個執行緒嗎?
麻煩各位板大可以告訴我,
謝謝
作者: mmis1000 (秋月戀楓)   2015-05-05 18:56:00
重繪不一定要輸出到銀幕上阿,chrome是等js跑完再一並輸出firefox看狀況,不過大部分時候是跟fps同步spec壓根兒沒規定到這一塊,所以別幹這種傻事不對...firefox會同步也是少數狀況而已如果用sync ajax時同時跑動畫,ff會有,chrome會沒畫面完全是依實作而定
作者: leicheong (睡魔)   2015-05-05 23:21:00
在.load以recursive function方式跑應該就可以了吧?
作者: mmis1000 (秋月戀楓)   2015-05-06 01:08:00
如果你要他同時輸出到銀幕,請用setTimeout之類跑
作者: eight0 (欸XD)   2015-05-06 07:32:00
http://x.co/9RKAl 這篇文章講得很完整

Links booklink

Contact Us: admin [ a t ] ucptt.com