You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Office JS Dialog API在Word 16.13(Mac)无法再次打开弹窗问题

解决Mac Word 16.13中displayDialogAsync错误12007的问题

首先,这个错误代码12007提示“任务窗格已打开一个对话框”但实际没有,且仅在特定Mac版本复现,大概率是该版本Mac Office的对话框状态管理bug——Office内部没有正确清理已关闭对话框的状态,导致认为仍有对话框处于打开状态。结合你的代码和环境,我们可以从以下几个方向排查和修复:

1. 修复代码中错误分支的潜在问题

你的代码在asyncResult.status === "failed"时直接调用dialog.close(),但此时asyncResult.value(也就是dialog)可能还未被正确初始化,直接调用close()会抛出未定义错误,这可能进一步干扰Office的对话框状态管理。先修改这部分逻辑:

Office.context.ui.displayDialogAsync( dialogUrl, { width: 60, height: 60, requireHTTPS: false, displayInIframe: false }, asyncResult => {
  dialog = asyncResult.value;
  if (asyncResult.status === "failed") {
    dispatch(MessageActions.showError(asyncResult.error.message));
    // 先判断dialog是否存在再调用close
    if (dialog) {
      dialog.close();
    }
    // 手动重置dialog实例
    dialog = null;
  } else {
    dialog.addEventHandler(Office.EventType.DialogMessageReceived, arg => {
      dispatch({ type: LOADED });
      dialog.close();
      dialog = null; // 关闭后重置实例
    });
    dialog.addEventHandler(Office.EventType.DialogEventReceived, arg => {
      if (arg && arg.error === 12006) {
        dispatch({ type: LOADED });
      }
      // 无论是否错误,都重置dialog实例
      dialog = null;
    });
  }
});

关闭对话框后手动将dialog置为null,确保代码层面没有残留的实例引用,也能帮助Office正确识别状态。

2. 针对Mac特定版本的临时规避方案

由于这是旧版本Mac Office的bug,我们可以在调用displayDialogAsync前,先尝试清理可能存在的残留对话框状态:

  • 尝试强制关闭现有(可能是Office内部认为存在的)对话框:如果dialog变量不为null,先调用close()再重置。
  • 切换对话框的显示模式:将displayInIframe设置为true,Mac上iframe模式的对话框实现逻辑和原生模式不同,可能绕过这个状态管理bug。

修改后的调用代码示例:

// 调用前先清理可能的残留对话框
if (dialog) {
  try {
    dialog.close();
  } catch (e) {
    // 忽略关闭失败的情况
  }
  dialog = null;
}

// 切换为iframe模式尝试
Office.context.ui.displayDialogAsync( dialogUrl, { width: 60, height: 60, requireHTTPS: false, displayInIframe: true }, asyncResult => {
  // 后续逻辑同修改后的代码...
});

3. 版本升级建议

这个问题仅出现在Word for Mac v16.13(18.05.13),后续微软已经修复了对话框状态管理的相关bug,建议用户升级到最新版本的Office for Mac,从根源上解决这个问题。

内容的提问来源于stack exchange,提问作者RatiboR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:42:26