【发布时间】:2011-10-20 19:39:19
【问题描述】:
我有一个使用 Javascript 构建 UI 的库,由于涉及到动态内容,我有时想将内容输出到浏览器,检查布局如何更改以支持此功能,然后根据结果执行不同的逻辑.例如:检测某些文本是否溢出并用省略号将其截断。
通常我通过输出更改来实现这一点,然后使用 window.setTimeout(0) 等待布局更新并调用其余逻辑。这显然不是最理想的,因为不同的浏览器可能会实现一个太慢而无法防止闪烁的最小超时或使用大量 CPU 的更快。
理想情况下,我想做 DOM 更改,然后强制布局同步更新并立即内联运行“修复”逻辑。有什么想法吗?
【问题讨论】:
-
我不明白。为什么 setTimeout(0) 和一个缓慢的最小超时会导致闪烁?
-
如果最小超时时间太长(假设超过 100 毫秒),那么我所做的更新链会导致闪烁:第一步会做一些事情,然后第二步修复它,第三步step 做其他事情等等 - 而不是一次做所有事情。
标签: javascript dom layout browser