Outlook Add-in调用displayDialogAsync网页端正常桌面端闪退求助
Outlook桌面端displayDialogAsync弹窗闪退问题解答
根因确认
你遇到的是2102版本Outlook桌面端的已知官方BUG,既不是该功能不支持桌面端,也不存在配置遗漏问题。
- 你使用的2102版本(Build 13801.xxxx)属于2021年上半年发布的Office Current Channel版本,该版本的
Office.context.ui.displayDialogAsync接口适配存在缺陷:桌面端内置的WebView2运行时会误将同域名弹窗判定为未授权跨域请求,直接触发强制关闭逻辑,就会出现弹窗瞬间消失的现象。 - 该缺陷已在2110版本(Build 14527.xxxx)中被官方修复,和你另一台设备的测试结果完全匹配。
- 你已完成的配置(弹窗域名与插件主域名一致、已加入XML manifest的AppDomains列表、使用HTTPS协议)全部符合官方要求,没有遗漏。
旧版本兼容方案
如果你的插件需要覆盖2110之前的Outlook版本,可以选择以下两种处理方案:
- 调用
displayDialogAsync时显式指定弹窗的height和width参数,不要使用默认值。旧版本对默认尺寸的弹窗存在额外处理缺陷,显式指定尺寸可以大幅降低BUG触发概率,示例代码如下:
Office.context.ui.displayDialogAsync("https://你的弹窗路径", { height: 60, width: 60 }, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { const dialog = asyncResult.value; // 后续弹窗交互逻辑 } } );
参数的单位为窗口占比,取值范围为0-100。
2. 针对低于2110的版本做降级兼容:通过Office.js接口读取客户端版本号,判断低于阈值时,改用任务窗格内的内嵌iframe代替独立弹窗实现对应功能,完全规避该接口的版本兼容问题。
内容的提问来源于stack exchange,提问作者Carl
相关产品推荐
相关产品推荐

