从 Outlook 加载项在默认浏览器中打开同源页面



我有一个使用 office.js 的 Outlook 加载项。 外接程序使用要求集 1.5。 如果在浏览器中打开加载项,它将按预期运行。(目标设置为"_blank"的链接在新选项卡中打开,无论来源如何( 单击与应用程序 SourceLocation 具有相同来源的链接,并且目标设置为"_blank"时,页面将在 Outlook 中的小型浏览器中打开,而不是在用户的默认浏览器中打开。

我已经在以下版本上进行了测试:

在弹出窗口中打开相同的域链接:

Windows 10 Enterprise
Version 1903
Build 18362.418
Outlook
Version 1908 
Build 11929.20388 Click-to-Run
Windows 10 Enterprise
Version 1903
Build 18362.418
Outlook
Version 1908 
Build 11929.20300 Click-to-Run

按预期工作(在默认浏览器中打开(:

macOS 
Mojave 
version 10.14.6 
Outlook:
Version 16.29 (19090802)
Windows 10 Enterprise
Version 1803
Build 17134.766
Outlook
Version 1908 
Build 11929.20300 Click-to-Run
Windows 10 Enterprise
Version 1809
Build 17763.557
Outlook
Version 1803 
Build 9126.2275 Click-to-Run

我相信这个问题始于最近对 Windows 或 Outlook 的更新:大约在同一时间,加载项开始使用 Edge 而不是 IE。 请注意,在 Mac 上进行测试时,如果打开的 url 与应用程序 SourceLocation 具有相同的来源,则使用window.open(URL, '_blank');打开的页面将在弹出式浏览器中打开,而不是用户的默认浏览器中打开。

有一个新的Officejs API可用于处理这个问题。 请参阅支持的客户端的打开浏览器窗口 API 要求集。 有关用法,请参阅 Office.UI 界面。

如果支持 Outlook Web 或非 365 客户端,请使用Office.context.requirements.isSetSupported('OpenBrowserWindowApi','1.1')检查是否可以使用openBrowserWindow,否则使用window.open

您看到的行为是设计使然。如果 Edge 是同一域,则会使用 Edge 打开新窗口,以支持使用 cookie 将数据传递到窗口。

当在弹出窗口中打开任何无法最大化或最小化的链接时,您如何期望用户获得无缝体验。用户通常希望使用其默认浏览器而不是默认浏览器。因此,我们使用 URL 参数来传递数据。

我猜你已经让它对开发人员友好,但不是实际用户。我建议您查看此最新更新。理想的解决方案是允许开发人员选择链接的打开方式,而不是Microsoft决定最适合每个开发的加载项。

我想我们需要将加载项托管在单独的域中以适应这种情况并让用户获得无缝体验。这样的不便。

最新更新