【问题标题】:Is there a way to suspend reflow during heavy DOM manipulations?有没有办法在繁重的 DOM 操作期间暂停重排?
【发布时间】:2011-03-17 09:22:35
【问题描述】:

我需要在我编写的附加组件中对整个网页文档进行大量的 DOM 操作。我想尽量减少回流,所以我所有的操作只发生一次回流。删除 body 元素,进行操作然后再次插入它不是一种选择,因为这会重新评估所有 <script> 元素。目前我在操作之前将 body 的可见性设置为 'none' 并在之后恢复 display 的值。不过,我不确定这是否是解决此问题的最佳方法。

有没有更好的方法?当然,它可能是 Firefox 特定的代码。毕竟它是一个 Firefox 插件。

【问题讨论】:

  • 你只是在添加东西,还是在做一堆修改?
  • 我用一堆元素替换所有不是空格的#text节点:foo bar baz -> <x><y>foo</y> <y>bar</y> <y>baz</y></x> 我这样做是为了得到每个单词的确切位置(在我操纵所有元素)。

标签: firefox dom reflow


【解决方案1】:

Gecko 实际上非常擅长自行抑制不必要的修改(也就是说,您最好不要弄乱它),除非在您进行的许多修改之间,您还要求提供以下信息要求布局是最新的(例如元素位置或大小、getComputedStyle 等)

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多