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/