我有两个DIV,第一个DIV的位置和高度取决于第二个DIV的位置。如果第二个DIV在渲染后不会改变它的位置,我想(并且必须)在渲染后立即获得第二个DIV的位置,这样我就可以设置第一个DIV的属性并让第一个DIV正确呈现,及时。 (实际页面庞大而复杂,抱歉我只能在这里描述相关细节。简而言之,这是一个移动页面,使用一些rem auto calc
逻辑重新渲染,每个位置都在相关DOM之后计算渲染。)
我试过这个(使用React.js):
将道具添加到名为ready-state
的第一个DIV,其值设置为document.readyState
值。
我想当document.readyState
更改为interactive
阶段(第二个div渲染出来)时,第一个DIV将被正确重新渲染。
但事实是,我不知道应该听哪个事件,所以我只是听了文件上的readystatechange
事件。这会在第二个DIV的渲染时间和第一个DIV之间产生时间间隔。
document.readyState
更改为interactive
后,我的页面会阻止一段时间。在此期间,第二个DIV已经渲染,但第一个DIV的道具尚未设置。只有当阻塞阶段结束时,第一个DIV才能通过document.getElementById('second-div')
获得第二个DIV的节点引用。
当#second-div
为readystatechange
时,我可以通过收听document.readyState
事件来引用completed
。但为时已晚。 (这使时间差)
问题是:
当document.readyState
仍为interactive
时,是否有可能获得DIV的位置? (因为我发现#second-div
的DOM节点已经呈现并定位,所以不必等到readyState
更改为complete
。)