我们在Outlook加载项中使用对话框进行身份验证。我们的加载项中有逻辑,首先检查对话框API支持,然后检查加载项是否成帧 - 在这种情况下,它会弹出一个新窗口进行身份验证。最近,对话API已经为OWA点亮,并且给我们带来了一些问题。
我们修复了与执行身份验证的顺序相关的一些先前问题(我们使用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 :(得分:0)
无法重现邮件的父问题。
关于对话框关闭时未触发的DialogEventReceived事件 - 这是一个已知的问题,我们正在修复已有的问题,但感谢报告!