javascript - 可见性会影响 DOM 操作性能吗?

标签 javascript performance optimization dom

IE7/Windows XP

我的页面中有一个第三方组件,它会在每次调整浏览器窗口大小时进行大量 DOM 操作以自行调整。

不幸的是,我无法控制它的内部功能,我已经尽可能地优化了其他一切(例如回调和事件处理程序)。我无法通过设置 display:none 将组件从流程中移除,因为如果我这样做,它无法 self 测量。

一般来说,在调整大小期间将容器的可见性设置为不可见是否有助于提高 DOM 渲染性能?

最佳答案

警告:我没有专门用 IE7 对此进行测试,但根据我对其 DOM 操作模型的了解,我相当有信心。

更改 CSS 属性(无论是 display: none 还是 visibility: hidden 或 what-have-you)都不会影响任何版本的任何浏览器中的 DOM 操作性能我合作过。提高 DOM 操作速度的主要方法是从文档树中删除您将要使用的节点,执行您的操作,然后将它们添加回去。这包括跟踪它们的后续兄弟节点(如果有) (与 insertBefore 一起使用),如果您正在处理分散在文档周围的节点,这可能会变得复杂。

我在一次执行大量 DOM 操作时看到的一种技术是获取 body 元素的子元素列表,删除它们,执行操作(无论它们位于文档中的什么位置树),然后重新附加主体的子节点。根据您的 DOM 操作所花费的时间(这本身部分取决于访问者计算机的速度!),这会产生明显的闪烁。这就是为什么通过 AJAX 处理内容的网站通常会用“微调器”或加载屏幕替换任何临时删除的内容。

关于javascript - 可见性会影响 DOM 操作性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/544180/

相关文章:

JavaScript:更改环境中的 src 文件

javascript - 查找函数是否返回 Promise 的方法

android - Activity 或 Fragment 哪个更适合用于性能和可靠性?

performance - Web 应用程序负载测试的最佳实践和文献

optimization - 数据关系的复杂合并

javascript - 是否可以使用 Xamarin.iOS 将字符串从 C# 返回到 Javascript?

java - 如何有效地使用静态变量?

node.js - 在 Node.js 中操作从数据库中获取的数字的最佳/最合适的方法

matlab - 非线性灰盒系统辨识与Matlab

javascript - 如何使用 ExtendScript 在 InDesign 中以编程方式将文本设置为 "Small Caps"?