我们有一个非常重的React组件有时会在Excel Addin中加载大约2000个项目。在Mac和Chrome上,该组件工作正常,没有错误。但在Windows中,加载项错误将显示并完全清除加载项页面。
进一步深入研究,我们可以用IE11重新编写它。在加载慢速组件时,IE将发出脚本无响应错误。我描述了它,看到了很多DOM操作。我想知道为什么同样的代码在IE上运行得那么慢。我们还试图通过优化我们的组件来解决这个问题。
答案 0 :(得分:1)
来自docs:
重要说明:为任何Office主机应用程序开发加载项时, 从该部分内部引用Office的JavaScript API 的页面。这可确保API在之前完全初始化 任何身体元素。 Office主机要求加载项在其中初始化 5秒激活。如果您的加载项未在此内激活 阈值,它将被声明为无响应,并将出现错误消息 显示给用户。
为了确保加载项运行良好,Office会给您5秒钟的时间来完成加载项的初始化。也就是说,平台和浏览器之间存在一些自然的时序差异。这就是为什么如果你对着5秒(这听起来像你),你可能不会在整个板上看到这个错误表面。
通常,最重要的考虑因素是当您的页面上连接不同的组件时。您需要确保在所有其他人之前加载和初始化Office.js。即使您的加载项花费额外的10秒钟内容,也可以轻松进入5秒窗口(尽管请为了您的用户,请不要花费10秒!)。
一些有用的提示:
确保Office.js在您的引用中而不是在您的末尾引用。通常,Web应用程序希望最后引用JS,因此首先填充DOM。然而,这种情况是该规则的例外。参考是早期的,几乎任何其他东西加载之前。
将Office.initialize()或包含它的js库也放在标记中。这将确保在加载任何其他内容之前连接加载项。
考虑将样式从加载延迟到以后。谷歌有一个很好的例子@ Optimize CSS Delivery。