【问题标题】:Outlook Javascript API - window.open not working from Outlook 2016 Desktop/WindowsOutlook Javascript API - window.open 在 Outlook 2016 桌面/Windows 中不起作用
【发布时间】:2016-11-04 01:49:59
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: office365 outlook-addin office-addins office-js outlook-api


    【解决方案1】:

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

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

    【讨论】:

    • 我在 OWA IE 和 OWA Safari 中重定向到另一个域(根据您的第 2 点)的结果好坏参半。你愿意分享一些关于你的重定向代码的细节吗?也许创建一个新问题并用一些细节回答它?谢谢。
    【解决方案2】:

    我认为window.location.href 对你有用。

    window.location.href = URL
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      相关资源
      最近更新 更多