问题描述
我正在构建我的第一个电子桌面应用程序。它从电子表格数据创建格式化的文档/书籍,以进行打印或制作为 PDF。我试图找出在拥有大型文档(大量 div)时防止回流/重绘性能损失的最佳方法。我发现如果我在 iframe 中有这本书,那么我不会因 UI 更改而遭受重排/重绘,并且可以控制何时加载它。但是,如果我尝试创建 PDF,我只会获得可见的 iframe 数量。
简单地说,我正在寻找最佳解决方案,以防止在复杂的 HTML 元素中重排,同时仍然能够将其打印为 PDF。
解决方法
我已经找到了解决问题的方法。
据我所知,对于不运行服务器的电子桌面应用程序,您无法直接访问元素上的 myIframe.contentDocument 以执行附加、innerHTML 或 offsetHeight 等操作。您唯一能做的就是contentDocument.write(),但是一旦您使用了此方法,您就可以访问所有其他常规 DOM 方法。我能理解的最好的是,当您使用 contentDocument.write() 时,它实际上创建了一个虚拟 HTML 文档。这是我目前的解决方法,它就像一种魅力,让我可以控制哪些元素回流,哪些不回流。
希望这对任何处理相同问题的人有所帮助。