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

看板Ajax作者 (LaoDa)時間10年前 (2015/05/05 18:42), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串1/1
最近在想一個有趣的問題, $(function(){ for(var i=0; i< 10000; i++){ $(".test").append("<div>"+i +"</div>"); console.log($(document).height()); } }) 以上是一段javascript append 10000個 div的程式碼, 在append後馬上印出document的高, 不過在跑迴圈時, 畫面還沒有完成繪製, 可是他的高卻一直有在變化, 想請問這是為什麼呢? 繪製網頁跟執行javascript是同個執行緒嗎? 麻煩各位板大可以告訴我, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.199.31 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1430822536.A.1CB.html

05/05 18:56, , 1F
重繪不一定要輸出到銀幕上阿,chrome是等js跑完再一並輸
05/05 18:56, 1F

05/05 18:57, , 2F
05/05 18:57, 2F

05/05 18:57, , 3F
firefox看狀況,不過大部分時候是跟fps同步
05/05 18:57, 3F

05/05 18:58, , 4F
spec壓根兒沒規定到這一塊,所以別幹這種傻事
05/05 18:58, 4F

05/05 18:59, , 5F
不對...firefox會同步也是少數狀況而已
05/05 18:59, 5F

05/05 19:00, , 6F
如果用sync ajax時同時跑動畫,ff會有,chrome會沒畫面
05/05 19:00, 6F

05/05 19:01, , 7F
完全是依實作而定
05/05 19:01, 7F

05/05 23:21, , 8F
在.load以recursive function方式跑應該就可以了吧?
05/05 23:21, 8F

05/06 01:08, , 9F
如果你要他同時輸出到銀幕,請用setTimeout之類跑
05/06 01:08, 9F

05/06 07:32, , 10F
http://x.co/9RKAl 這篇文章講得很完整
05/06 07:32, 10F
文章代碼(AID): #1LI9w87B (Ajax)
文章代碼(AID): #1LI9w87B (Ajax)