我的代碼,我想運行一個看起來是這樣的僞代碼:如何檢測時,瀏覽器已經完成更新視圖(重新佈局,應用任何改變CSS)
一些應用CSS樣式一些元素
做一些其他的動作
的問題是,我需要做的不是「其他行動」,直到我敢肯定後,瀏覽器實際上呈現的變化d CSS並且對用戶可見。
儘管javascript是單線程的,並且如果'其他操作'阻止了javascript進一步執行,我認爲瀏覽器仍然可以用步驟1中設置的新CSS值更新視圖,即使javascript本身被阻止 - 但這似乎沒有發生(CSS更改直到第2步之後才顯示 - 在這種情況下,遠程服務調用完成)。
我還記得在intertubes上看到關於嘗試讀取虛擬div的寬度屬性的東西,並強制瀏覽器渲染/繪製,因爲它必須這樣做才能正確返回寬度值。如果任何人都可以驗證併發布,我會改變並給他們答案,因爲它看起來像一個簡單的方法,保持代碼的流程,並不依賴於時間,這可能是不同的硬件/情況/等。 (我知道這是一個黑客,但我們在這裏談論瀏覽器:) – jinglesthula