【问题标题】:Office.context.ui undefiend for Outlook Web App with Exchange 2013 account使用 Exchange 2013 帐户的 Outlook Web App 未定义 Office.context.ui
【发布时间】:2019-07-16 06:09:07
【问题描述】:

我需要 Exchange 2013 帐户支持 Outlook Web 加载项。因此,在为 Outlook Web 应用添加清单文件后,加载项加载良好。

我正在使用对话框 API 弹出窗口来实现 登录 功能。所以当客户点击登录按钮时,它会显示Cannot read property 'displayDialogAsync' of undefined

在调试时,我发现 Office.context 不包含 ui 属性。

谁能指导我哪里出错了?或者包含交换帐户的 Outlook Web 应用是否支持此对话框 API。

我的加载项在 Outlook Desktop、Outlook Web 和 手机也是如此

if (window.hasOwnProperty('Office')) {
      Office.context.ui.displayDialogAsync(
        `${window.location.origin}/#/signin/` + Office.context.mailbox.userProfile.emailAddress,
        {
          height: 60,
          width: 20
        },
        (result) => {
          const dialog = result.value;
          dialog.addEventHandler(
            Office.EventType.DialogMessageReceived,
            (e: { type: string, message: string }) => {
              if (e.message === 'true') {
                this.oAuthService.initImplicitFlow();
              }
              dialog.close();
            });
        }
      );
      }

【问题讨论】:

    标签: outlook office-js outlook-web-addins outlook-web-app exchange-server-2013


    【解决方案1】:

    您需要检查需求集。

    需求集是 API 成员的命名组。 Office 加载项使用清单中指定的要求集或使用运行时检查来确定 Office 主机是否支持加载项所需的 API。有关详细信息,请参阅 Office 版本和要求集。 displayDialogAsync 方法在 Word、Excel 或 PowerPoint 加载项的 DialogApi 要求集和 Outlook 的邮箱要求集 1.4 中可用。

    有关 Dialog API 要求的更多信息,请参阅 Dialog API requirement sets

    错误处理

    您的回调需要检查result.error.coderesult.error.message。一旦你知道错误是什么,你就可以开始排除故障了。例如。

    var dialog;
    Office.context.ui.displayDialogAsync('https://myDomain/myDialog.html',
       function (asyncResult) {
           if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                showNotification(asyncResult.error.code = ": " + asyncResult.error.message);
           } else {
                dialog = asyncResult.value;
                dialog.addEventHandler(Office.EventType.DialogMessageReceived, processMessage);
          }
    });
    

    【讨论】:

    • 我使用代码检查过:Office.context.requirements.isSetSupported("DialogApi",1.1)。它不受支持那么有什么替代方法呢?
    • 尝试检查Office.context.requirements.isSetSupported("DialogApi",1.4)
    • DialogApi 仅适用于 1.1 版本,那么为什么要尝试使用 1.4 呢?好吧,它返回 false 为 Exchange 2013 帐户
    • DialogAPI 1.1 仅适用于邮箱 Api 要求集 1.4。对于 Exchange 2013 On Prem,不支持 1.4,因此您将无法使用对话框 api。如果可能,您必须在主任务窗格中执行您想要的任何代码。
    猜你喜欢
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多