Javascript Safari渲染速度慢,仅附加元素的维度不一致

Javascript Safari渲染速度慢,仅附加元素的维度不一致,javascript,jquery,html,safari,Javascript,Jquery,Html,Safari,我正在编写我继承的一些代码,这些代码使用jQuery生成一些包含文本和图像的DIV块。它生成块,将它们附加到页面中,然后对块的内部文本元素调用outerHeight(),并使用这些高度来计算附带图像的大小 在除Safari之外的所有浏览器中,一切正常 在Safari中,调用outerHeight()时,有时刚附加的元素没有完全呈现,因此返回的度量值不准确,并且生成的页面看起来不正确。我可以在调试器中看到这一点-我的断点是在保存了错误的outerHeight()之后被命中的,在一两秒钟后,我看到渲

我正在编写我继承的一些代码,这些代码使用jQuery生成一些包含文本和图像的DIV块。它生成块,将它们附加到页面中,然后对块的内部文本元素调用outerHeight(),并使用这些高度来计算附带图像的大小

在除Safari之外的所有浏览器中,一切正常

在Safari中,调用outerHeight()时,有时刚附加的元素没有完全呈现,因此返回的度量值不准确,并且生成的页面看起来不正确。我可以在调试器中看到这一点-我的断点是在保存了错误的outerHeight()之后被命中的,在一两秒钟后,我看到渲染进度加快,再次调用outerHeight()会给出正确的值

我尝试使用setTimeout更明确地序列化这个序列,并在代码中稍后调用outerHeight()。这使得该问题发生的频率降低,但有时仍会发生


我觉得这必须是一种常见的模式——只获取附加元素的维度。以前有人处理过这个问题吗?

尝试过各种延迟,我发现大多数情况下,Safari会在不超过250毫秒左右的时间内完成附加元素的渲染。为了解决这个问题,我使用setTimeout在延迟后运行一个函数,以检查先前测量的高度是否与DOM中的当前高度匹配。如果没有,那么我知道渲染已经改变,我会重新设计这些元素的布局