OWA:Dialog API支持

时间:2017-02-09 22:04:36

标签: office-js

我们在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 ---

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

1 个答案:

答案 0 :(得分:0)

无法重现邮件的父问题。

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