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
。正如您提到的,如果您尝试打开不在您的域中的页面,它会对您大惊小怪。我发现有几种方法可以解决这个问题,具体取决于您的使用场景:
- 您可以更新清单的
<AppDomains>
部分以包含您要打开 window 的站点。此部分充当一种白名单。
- 您可以指向您域中的一个页面,该页面的根本目的是将您重定向到其他地方。我没有 运行 限制重定向 window,只是打开它。我使用此方法以及 qstring 参数来根据需要控制重定向。
我有一个用新 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
。正如您提到的,如果您尝试打开不在您的域中的页面,它会对您大惊小怪。我发现有几种方法可以解决这个问题,具体取决于您的使用场景:
- 您可以更新清单的
<AppDomains>
部分以包含您要打开 window 的站点。此部分充当一种白名单。 - 您可以指向您域中的一个页面,该页面的根本目的是将您重定向到其他地方。我没有 运行 限制重定向 window,只是打开它。我使用此方法以及 qstring 参数来根据需要控制重定向。