我遇到了一个问题,当我通过对话框 API 打开对话框时,对话框将正确显示(已加载对话框的图片),但是当我在对话框外部单击并按 Esc 键时,加载项将关闭但对话框将保持可见并且对进一步的用户交互完全没有响应(卡住对话框的图片)。在这种情况下,我没有收到任何错误消息(甚至我的事件处理程序DialogEventReceived
也没有被调用)。
如果我在对话框内单击并按 Esc 键,对话框将正确关闭(就像按下对话框的“X”按钮后一样)。在这种情况下,我的事件处理程序将被调用并且我得到12006
错误代码。
最初我在使用 Angular 构建的 Outlook 插件中遇到了这个问题。后来我创建了一个 Outlook Web 插件项目,它只打开请求的对话框,并且使用该插件我也遇到了同样的问题。
我调用对话框 API 的函数(来自 Outlook Web 插件项目):
function openDialogAsIframe() {
var dialog;
Office.context.ui.displayDialogAsync(window.location.origin + "/Dialog.html",
{ height: 16, width: 14, displayInIframe: true }, (asyncResult) => {
dialog = asyncResult.value;
dialog.addEventHandler(Office.EventType.DialogMessageReceived, (arg) => {
console.log(arg.message);
dialog.close();
});
dialog.addEventHandler(Office.EventType.DialogEventReceived, (arg) => {
console.log(arg.error);
dialog.close();
});
});
}
我使用以下 Web 浏览器重现了此问题:
- 谷歌浏览器 - 版本 93.0.4577.63
- Microsoft Edge - 版本 93.0.961.38
- 火狐 - 91.0.2
这个问题有什么解决办法吗?