3

我正在编写 Outlook 加载项。

我想通过使用显示对话框消息displayDialogAsync()

但是当我使用该方法时,会在显示对话框之前显示确认消息(我附上了屏幕截图)。

有没有跳过此消息的解决方案?

屏幕截图:代码调用 displayDialogAsync() 时的消息

·参考

https://dev.office.com/docs/add-ins/develop/dialog-api-in-office-add-ins

    function openWindow()
    {
        var startAddress = 'https://localhost:44303/AppCompose/Sample/Sample.html';
        Office.context.ui.displayDialogAsync(startAddress);
    }
4

2 回答 2

4

该消息是防止弹出窗口阻止程序所必需的。所以不,如果您使用弹出模式,则无法跳过它。但是,如果您的页面支持 iframe,您可以传递 displayAsIframe=true 参数(请参阅文档);此模式不会显示额外的确认,因为它显示为带有 iframe 的浮动 div(而不是新窗口)。

重要提示:我看到您正在使用 Office Online 中的 API。请注意,我们尚未正式更新我们的文档和示例以声明其受支持,因此您可能会在此过程中看到一些问题。我预计明年年初一切都会到位。

于 2016-12-02T19:46:49.420 回答
1

在 Outlook Web Access 中,使用window.open()而不是 Dialog API。这将允许您在不显示此对话框的情况下启动子窗口。不过,有一些警告:

  1. 正在启动的窗口的 URL 必须与您的加载项属于同一域。否则,您可能会看到弹出窗口被阻止的警告。

  2. window.open()如果不是作为用户操作的直接结果调用,Firefox 将显示弹出窗口阻止警告。如果您的加载项的用户可能正在使用 Firefox,只需确保在启动新窗口时,您是直接在onClick处理程序或其他东西中执行此操作,而不是通过 aPromise或 async 回调。

在 Outlook 桌面应用程序中,Dialog API 按预期工作,实际上,使用window.open()将始终触发弹出窗口阻止警告。

我们的加载项具有类似于以下的逻辑:

function launchDialog(url) {
  if (/WebApp/.test(Office.context.mailbox.diagnostics.hostName)) {
    window.open(url);
  } else {
    Office.context.ui.displayDialogAsync(url);
  }
}

希望这可以帮助!

于 2017-05-26T06:16:15.557 回答