2017-08-06 129 views
2

我们正在使用JavaScript API开发Outlook加载项。我们的加载项在本机Outlook 2016内运行良好,并且在使用Chrome浏览器或其他网络浏览器浏览到outlook.office365.com时。
尝试使用Internet Explorer浏览到Outlook网站时启动加载项无法加载它(我们正在获取顶部的“加载项错误”黄色通知)。
这不会发生在我们所有的电脑上。目前,它一直在发生,而上个星期它发生在另一台计算机上,但从此停止发生。只是为了说清楚 - 在大多数电脑上,使用IE,插件运行得很好。最简单的Outlook加载项无法在Internet Explorer中加载

我试着减肥我们的加载项,试图弄清楚我们的代码给了我们很大的困难。我已经结束了最简单的插件可能,它仍然不会在该计算机的IE上启动。你可以看到这个简单的加载项here。 此加载项链接到office.js,并在initialize回调中的div中添加一个简单的文本。除了单台计算机之外,它在其他地方运行得很好。

我的电脑正在运行IE版本11.483.15063.0,更新版本11.0.44,如果这有什么区别。

有其他人遇到过这个问题吗?什么可能导致它?

回答

0

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

这里的问题是你没有触发Office.initialize直到之后 DOM已经加载。您需要初始化,触发其他任何操作之前:

<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页面来构建插件。

+0

感谢您的回复,但它没有奏效。 加载项不初始化办公室。它只是在办公室初始化后设置回拨。如果在那个cb中,然后为onload设置另一个cb - 我已经在onload事件之后,所以它不会再被调用,并且“init之后”代码将不会运行。 我的代码应该可以正常工作。在中加载office.js,然后在onload中查找window.Office,直到它准备好(以防万一),并将初始化cb设置为“after init” 我确信我的代码有问题,但我仍然看不到。 再次感谢您的尝试。 –

+1

这不完全正确。 'onload'和'initialize'事件是异步并行发生的。在这种情况下,您需要延迟init直到DOM完成。请参阅https://dev.office.com/docs/add-ins/develop/loading-the-dom-and-runtime-environment#checking-the-load-status,了解如何连接它的示例。 –

+0

感谢您的链接。我通读了一遍,并且还检查了电话拨号程序示例(https://code.msdn.microsoft.com/office/Mail-apps-for-Outlook-dc28341f),它似乎有些东西可能适用于我。我想这是事实 - 大多数计算机onLoad发生在Office调用初始化之前,所以一切工作正常。但有时初始化首先发生,而且我必须让它工作得很好。 感谢您指导我。 –

相关问题