【问题标题】:Simplest Outlook add-in fails to load in Internet Explorer最简单的 Outlook 加载项无法在 Internet Explorer 中加载
【发布时间】:2017-08-06 11:16:09
【问题描述】:

我们正在使用 JavaScript API 开发 Outlook 加载项。我们的加载项在本机 Outlook 2016 中运行良好,并且在使用 Chrome 或其他 Web 浏览器浏览到 outlook.office365.com 时运行良好。
在使用 Internet Explorer 浏览 Outlook 网站时尝试启动加载项无法加载(我们在顶部收到“加载项错误”黄色通知)。
这不会发生在我们所有的计算机上。目前,它一直发生在一台计算机上,上周它发生在另一台计算机上,但此后不再发生。只是说清楚 - 在大多数计算机上,使用 IE,加载项运行得很好。

我尝试精简我们的加载项,试图找出我们的哪段代码给我们带来了困难。我最终得到了最简单的加载项,但它仍然无法在单台计算机的 IE 上启动。你可以看到这个简单的插件here。 此加载项链接到 office.js 并在初始化回调的 div 中添加一个简单的文本。除了那台计算机之外,它在其他任何地方都可以正常工作。

我的电脑运行的是 IE 版本 11.483.15063.0,更新版本 11.0.44,如果这有什么不同的话。

还有其他人遇到过这个问题吗?可能是什么原因造成的?

【问题讨论】:

    标签: office-js


    【解决方案1】:

    您加载 Office 太晚了,这会触发超时。由于这是一个时间问题,您将在不同的机器和浏览器上看到不同的结果(也取决于任何给定时间的网络延迟)。

    这里的问题是,直到 DOM 加载完毕后,您才触发 Office.initialize。您需要在触发其他任何内容之前进行初始化:

    <script>
        // Initialize Office
        Office.initialize = function () {
    
            // Wait for DOM to get fully loaded
            window.onload = function () {
    
                // Execute commands against DOM
                var div = document.getElementById('after');
                div.innerText = 'after init';
    
            }
    
        };
    </script>
    

    我有一篇关于这个主题的博文,您可能会觉得有帮助:Super Simple Outlook Add-in。它仅使用托管在 GitHub 上的静态 HTML 页面来构建加载项。

    【讨论】:

    • 感谢您的回复,但没有成功。加载项不会初始化 office。它只是在初始化后设置一个回调供办公室调用。如果在那个 cb 中我为 onload 设置另一个 cb - 我已经在 onload 事件之后,所以它不会再次被调用,并且“初始化之后”代码将不会运行。我的代码应该可以正常工作。在 中加载 office.js,然后在 onload 中查找 window.Office 直到它准备好(以防万一),并放入设置“初始化后”的初始化 cb 我确定我的有问题代码,但我仍然看不到什么。再次感谢您的尝试。
    • 这并不完全正确。 onloadinitialize 事件异步并行发生。在这种情况下,您将初始化延迟到 DOM 完成之后。请参阅dev.office.com/docs/add-ins/develop/… 了解如何连接的示例。
    • 感谢您的链接。我通读了一遍,还检查了电话拨号器示例 (code.msdn.microsoft.com/office/Mail-apps-for-Outlook-dc28341f),它似乎有一些对我有用的东西。我想情况就是这样——在大多数计算机上,onLoad 发生在 Office 调用初始化之前,所以一切正常。但有时初始化首先发生,我必须让它也能正常工作。谢谢你把我带到那里。
    • 很大程度上取决于页面内容。 window.onload 在页面的所有资源都准备好之前不会被触发。 Office.initialize 在 Office 准备就绪时由 Office 触发,这可能会或可能不会在 onload 之前发生。例如,如果您有一个包含大量图像的加载项,则 Office 可能会在您的页面获取所有内容之前准备就绪。
    • 我已经更新了我的要点。现在它首先注册初始化 cb,然后注册 onload cb,并在其中设置不同的标志。只有当两个标志都为真时,它才会执行“afterInit”代码。再次 - 它大部分工作正常,但有问题的计算机无法运行它。我看到 index.html 网络请求/响应,但代码甚至没有运行。我尝试在其中添加一个“调试器”命令,但它不会破坏开发工具。就好像 javascript 根本没有运行。
    猜你喜欢
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 2018-09-03
    相关资源
    最近更新 更多