我想在调用 Office.context.ui.displayDialogAsync() 方法时跳过显示消息

问题描述 投票:0回答:2

我正在编写一个 Outlook 插件。

我想使用

displayDialogAsync()
显示对话框消息。

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

有什么解决方案可以跳过此消息吗?

screen shot : the message when a code calls 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);
    }
javascript outlook office365 office-js outlook-web-addins
2个回答
4
投票

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

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


1
投票

在 Outlook Web Access 中,使用

window.open()
而不是对话框 API。这将允许您启动子窗口而不显示此对话框。不过,有一些注意事项:

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

  2. 如果用户操作未直接调用
  3. window.open()

    ,则

    Firefox 将显示弹出窗口被阻止的警告。如果您的外接程序的用户可能使用 Firefox,只需确保在启动新窗口时,直接在 
    onClick
    处理程序或其他内容中执行此操作,而不是通过
    Promise
    或异步回调。

在 Outlook 桌面应用程序中,对话框 API 按预期工作,事实上,使用

window.open()
将始终触发弹出窗口被阻止的警告。

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

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

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.