鍍金池/ 問答/HTML5  Linux  HTML/ 如何知道一次瀏覽器渲染布局(layout)已經(jīng)結束?

如何知道一次瀏覽器渲染布局(layout)已經(jīng)結束?

我們公司是做在線閱讀器的,其中使用到了column的形式展示數(shù)據(jù)。
我在一個container div上寫好了各種column的css定義。
然后在特定的時候,要從后臺拿到真正的圖書內(nèi)容,加到container里面,同時還需要顯示一下目前內(nèi)容實際分成了多少頁。

現(xiàn)在的問題是,因為瀏覽器布局有一個時間差,所以我們的JS獲取的實際內(nèi)容寬度,發(fā)生了抖動,尤其是當存在圖片時。

示例代碼如下:

$('#container').append(newContent); // newContent是從后臺拿到的數(shù)據(jù),已經(jīng)轉(zhuǎn)為一個普通的div
$('#container').width();   //我們需要獲取到寬度值,然后經(jīng)過一系列計算,可以算出新的內(nèi)容一共分了多少頁

問題是,馬上執(zhí)行上述代碼,可能獲得的寬度值是不準確的,需要等一會兒再獲取,才是準確的。
可是,因為我們不知道newContent的可能長度是多少,也就沒法預估一個比較合適的延遲值。最好是能找到一個類似于document.ready這樣的方法,可以用來判定某次修改已經(jīng)layout完成,從而可以獲取到準確的數(shù)值。

請問,有這樣的回調(diào)方法嗎?或者有什么方法可以實現(xiàn)“抓住準確的layout完成時點”?

多謝各位大俠

回答
編輯回答
陪我終

append是同步方法, 保證 newContent 內(nèi)容不出現(xiàn)替換元素, 或者定死替換元素寬度. 就能拿到總體寬度吧

2017年10月9日 16:42
編輯回答
護她命

看看這篇回答能不能幫助你
http://stackmirror.caup.cn/pa...

2017年10月27日 07:10
編輯回答
枕邊人

馬上獲取是不可能獲取到的,原因我在另一個問題里寫了,這里不重復了。

理論上說,你這里只要 setTimeout 到下一個時間周期就能取到。

2017年9月29日 05:52
編輯回答
我甘愿
setTimeout(function() {
    $('#container').width(); 
})
2017年3月8日 16:38