IE7/Windows XP
我的页面中有第三方组件,每次调整浏览器窗口大小时都会执行大量DOM操作以调整自身.
不幸的是,我几乎无法控制它在内部的作用,而且我已经尽可能地优化了其他所有内容(例如回调和事件处理程序).我不能通过设置display:none来使组件脱离流程,因为如果我这样做,它将无法自我测量.
通常,在调整大小期间将容器的可见性设置为不可见有助于提高DOM呈现性能吗?
警告:我没有用IE7对此进行过专门测试,但根据我对DOM操作模型的了解,我有理由相信.
更改CSS属性(无论是display: none
或者visibility: hidden
你有什么)都不会影响我使用的任何浏览器的任何版本的DOM操作的性能.提高DOM操作速度的主要方法是从文档树中删除您将要使用的节点,执行操作并重新添加它们.这包括跟踪其后续的兄弟节点,如果有的话(用于insertBefore
),如果您正在处理散布在文档周围的节点,这可能会变得复杂.
我在一次执行大量DOM操作时看到的一种技术是获取body
元素的子项列表,删除它们,执行操作(无论它们落在文档树中的哪个位置),然后重新获取正文的子节点.根据您的DOM操作需要多长时间(这本身部分取决于访问者计算机的速度!),这会产生明显的闪烁.这就是为什么通过AJAX操作内容的网站通常会用"微调器"或加载屏幕替换任何临时删除的内容.