gpt4 book ai didi

outlook-addin - Office.context.ui.displayDialogAsync 抛出 5001 内部错误

转载 作者:行者123 更新时间:2023-12-03 22:40:22 25 4
gpt4 key购买 nike

我正在使用 Visual Studio 项目模板创建一个新的 Outlook 邮件加载项,我可以在其中获取显示当前所选电子邮件属性的示例。

我添加了一个带有单击事件处理程序的按钮,以使用以下代码打开一个对话框:

  $('#clickMeButton').click(function () {
Office.context.ui.displayDialogAsync('https://localhost/OutlookAddinTest/MessageDialog.html', {
height: 40,
width: 40,
requireHTTPS: true
}, function (result) {
_dlg = result.value;
_dlg.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogMessageReceived, dialogMessageReceived);
});
});

我正在 Chrome 中使用 Outlook Web 客户端对此进行调试: Screenshot of debug session in Chrome

我不知道它是否与此错误相关,但在加载网站后,在单击 clickMeButton 之前,我可以看到以下错误: enter image description here

osfruntime.js:13 Error while parsing the 'sandbox' attribute: 'ms-allow-popups' is an invalid sandbox flag.OSF.OsfControl._createIframeAndActivateOsfControl @ osfruntime.js:13

displayDialogAsync(...) 函数不是应该用于 Outlook 邮件加载项吗?这可能是一个问题,因为它会在主 Outlook html 页面的上下文中加载另一个 html 页面。但它在 Outlook 桌面客户端中不起作用。

最佳答案

  • 错误

错误osfruntime.js:13 解析“sandbox”属性时出错:ms-allow-popups

来自以下事实:ms-allow-popupsvendor prefixed css property .

事实上,您可能知道您的加载项位于沙盒 iframe 中。为了能够执行某些操作,此沙盒 iframe 具有一些额外的权限。例如,允许弹出窗口,但由于 MS IE、Google Chrome、Firefox 等在沙盒选项上并未 100% 达成一致,因此它们有一些“供应商”特定选项,而 ms-allow-popups 是其中之一他们(对于 MS IE)。如果您使用 devtools 浏览 iFrame,您会发现以下选项sandbox="allow-scriptsallow-formsallow-same-originms-allow-popupsallow-popups"。

总结一下该错误,您可以忽略它,因为它仅由 Chrome 引发,因为它不理解 Microsoft 供应商前缀。您的代码对此不负有任何责任。

  • 身份验证问题

现在介绍一下dialogAPI。不幸的是,dialogAPI 仅适用于 Microsoft Outlook Desktop 2016 最新版本。 (>= 16.0.6741.1000。)。确保您的 Outlook 桌面是最新的。 Web 客户端(又名 OWA)没有对话 API。您将无法在使用 OWA 的 Chrome 上看到任何对话框。

我的解决方案在 Keluro 上实现是在以下示例代码( typescript )可用时使用dialogAPI。

    hasDialogApi(): boolean {
var context: any = Office.context;
try {
return context.requirements.isSetSupported('DialogAPI', '1.1');
} catch (ex) {
return false;
}
}

如果dialogAPI不可用(旧版Outlook 2016、Outlook Web客户端),我们将回退到基于弹出窗口的身份验证流程。我们使用基于弹出窗口的登录机制结合 SignalR/WebSockets 来实现这样的流程。请参阅this postthis one了解更多。

结论:使用dialogAPI 构建的Outlook 桌面在撰写本文时还不是很普遍,但我们看到越来越多的用户使用它们。 dialogAPI 对于我们的外接程序开发人员来说至关重要,因为对于没有dialogAPI 的Outlook 桌面,大多数时候基于弹出窗口的身份验证方案将不起作用(禁用弹出窗口、禁止Web 套接字等)。目前,没有dialogAPI 的Outlook 桌面代表了Keluro 上登录的最大部分用户。

注意:要调试 Outlook 桌面中的 iFrame,您可能会对 this 感兴趣。 .

关于outlook-addin - Office.context.ui.displayDialogAsync 抛出 5001 内部错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39221650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com