Outlook Javascript API - window.open 无法在 Outlook 2016 Desktop/Windows 中使用

Outlook Javascript API - window.open not working from Outlook 2016 Desktop/Windows

我有一个用新 JavaScript API 编写的 Office 加载项,在它里面,我有一个 JS 函数,经过一些逻辑后,它在一个新的 [=34] 中打开了一个网络应用程序=] 使用 window.open(url, '_blank')

localhost 托管的加载项中以及在 heroku 上部署后,从 Outlook Web 中的加载项窗格调用它时有效。

然而,当从命令(功能区上的加载项按钮)调用时,它工作 仅当加载项托管在本地主机上时,在我将其部署在 heroku 上后,加载项工作,在功能区中显示命令,执行 JS 逻辑,但 window.open 什么都不做。

看起来打开新 window 的唯一方法是使用 Office.context.ui.displayDialogAsync,但即便如此,它也只有在页面与加载项代码同源时才有效。

我认为存在一些安全限制,但为什么它在本地主机上托管时有效?有什么方法可以使用新的 Javascript API?

从 Outlook 中的命令打开浏览器 window

我认为 window.location.href 适合你。

window.location.href = URL

我的经验是,window.open 在不同平台上并不始终可靠,这迫使您使用 Office.context.ui.displayDialogAsync。正如您提到的,如果您尝试打开不在您的域中的页面,它会对您大惊小怪。我发现有几种方法可以解决这个问题,具体取决于您的使用场景:

  1. 您可以更新清单的 <AppDomains> 部分以包含您要打开 window 的站点。此部分充当一种白名单。
  2. 您可以指向您域中的一个页面,该页面的根本目的是将您重定向到其他地方。我没有 运行 限制重定向 window,只是打开它。我使用此方法以及 qstring 参数来根据需要控制重定向。