2017-02-09 40 views
1

我们在Outlook加载项中使用对话框进行身份验证。我们在加载项中有逻辑,首先检查对话框API支持,然后检查加载项是否被构造 - 在这种情况下,它弹出一个新的认证窗口。最近,OWA的对话框API亮起,并引发了一些问题。OWA:对话API支持

我们修复了一些与我们执行身份验证(我们使用ADAL.js)和初始化Office的顺序有关的问题。但是,一旦我们超过这些限制,就不会出现对话框可以使用Office.context.ui.messageParent与加载项进行通信。

此外,即使加载项订阅Microsoft.Office.WebExtension.EventType.DialogEventReceived事件,它们在对话框关闭时不会被触发(通常关闭对话框会返回12006错误代码,我们会加以注意)。

我创建了一个简单的Outlook加载项,只打开一个对话框,并验证它仍然无法与OWA中的加载项进行通信。我已经包含下面的代码。

外接代码:

Office.initialize = function (reason) { 
    $(document).ready(function() { 
     var resultArea = $("span"); 
     $("button").click(function() { 
      resultArea.text("Opening dialog"); 
      Office.context.ui.displayDialogAsync(
       window.location.origin + "/TestAddin/Dialog.html", 
       { height: 75, width: 25 }, 
       function (asyncResult) { 
        if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { 
         var dialog = asyncResult.value; 
         dialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogMessageReceived, function handleAuthDialogMessage(message) { 
          dialog.close(); 
          resultArea.text(message); 
         }); 
         dialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogEventReceived, function handleAuthDialogMessage(message) { 
          resultArea.text("Event encountered"); 
         }); 
        } else { 
         resultArea.text("Dialog failed"); 
        } 
       }); 
     }); 
    }) 
}; 

对话框代码:

Office.initialize = function (reason) { 
    $(document).ready(function() { 
     Office.context.ui.messageParent("dialog-opened"); 
    }) 
}; 

现在我已经调整了我们的插件来先检查,看看它是否是诬陷,(在这种情况下,打开一个新的认证窗口),然后检查或使用对话框API。这种方法使我们能够修复我们的生产缺陷,并重新启用OWA认证;不过,我想在对话框正常工作或我们的加载项已修复后采取对话:)

是否有人已意识到此问题了?

---更新2/22 ---

看来,对话可现在消息的父母。不幸的是,仍然存在一个突出的错误,即关闭对话框不会触发事件发送到加载项。

+0

如果您可以共享您的清单,指向加载项的Internet部署版本,则可能更容易重新生成。 –

回答

0

无法重现消息父级问题。

关于DialogEventReceived事件在对话框关闭时不会触发 - 这是一个已知的问题,我们正在为修复工作,但感谢您的报告!

+0

如果用户点击X,我们会关闭事件,但如果用户在焦点位于对话框内的控件上时点击ESC,则不会。这是已知问题的一部分吗? – lgaud

+0

@Igaud check out https://stackoverflow.com/questions/46037829/no-event-is-fired-when-closing-a-dialog-via-esc这仍然是一个问题。 –