我正在编写一个 Outlook 插件。
我想使用
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);
}
该消息对于防止弹出窗口拦截程序是必要的。所以不,如果您使用弹出模式,则无法跳过它。但是,如果您的页面支持 iframe,您可以传递 displayAsIframe=true 参数(请参阅文档);此模式不会显示额外的确认,因为它显示为带有 Iframe 的浮动 div(而不是新窗口)。
重要提示:我发现您正在 Office Online 中使用 API。请注意,我们尚未正式更新我们的文档和示例来声明它受支持,因此您可能会在此过程中看到一些障碍。我预计一切都会在明年初就位。
在 Outlook Web Access 中,使用
window.open()
而不是对话框 API。这将允许您启动子窗口而不显示此对话框。不过,有一些注意事项:
正在启动的窗口的 URL 必须与您的加载项属于同一域。否则,您可能会看到弹出窗口被阻止的警告。
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);
}
}
希望这有帮助!