2

我有一个用新的 JavaScript API 编写的 Office 加载项,在其中,我有一个 JS 函数,经过一些逻辑后,该函数在新窗口中使用window.open(url, '_blank')

当从 Outlook Web 中的加载项窗格调用时,它可以在localhost托管加载项以及在 heroku 上部署之后工作。

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

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

我认为存在一些安全限制,但是为什么它在托管在本地主机上时会起作用?有什么方法可以使用新的 Javascript API 从 Outlook 中的命令打开浏览器窗口?

4

2 回答 2

1

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

  1. 您可以更新<AppDomains>清单的部分以包含要打开窗口的站点。此部分充当一种白名单。
  2. 您可以指向您域中的页面,该页面的灵魂目的是将您重定向到其他地方。我没有遇到重定向窗口的限制,只是打开它。我使用此方法和 qstring 参数来根据需要控制重定向。
于 2017-05-16T19:41:07.713 回答
0

我想window.location.href会为你工作。

window.location.href = URL
于 2017-01-11T05:19:49.723 回答