【发布时间】:2019-03-11 10:20:05
【问题描述】:
我正在开发 Microsoft Outlook 加载项,我们遇到了 Outlook 2016 任务窗格无法与新窗口对话的问题。目前这只发生在版本 1810,内部版本 10927.20001。
要在此特定版本的 Outlook 中重现该问题:
- 从任务窗格启动一个新窗口(在我们的例子中是 OAuth 登录窗口,重定向到成功的登录页面)
- 检查窗口 - 似乎 window.opener 对象未定义
如果我们将此行为与旧版本的 Outlook 进行比较,我们可以访问 window 对象、window.opener 对象和 window.opener 对象中定义的其他属性。大约 2 周前开始出现此问题。
【问题讨论】:
-
您是否考虑过使用Dialog API打开新窗口?它包括一种用于向任务窗格发送消息的方法。 docs.microsoft.com/en-us/javascript/api/office/…
-
是的,我们在应用程序的其他地方使用了对话框 API,并使用它来向任务窗格发送消息。不幸的是,由于我们必须在这个特定窗口内多次重定向用户以使用我们的应用程序对用户进行 OAuth,因此我们在不使用 Dialog API 的情况下构建了这个身份验证流程。在这个新的 Outlook 版本中,是否出于安全原因禁止使用 window.opener 对象?我们认为这可能是这种情况,因为它在以前的版本中有效。如果没有,我们是否应该期望我们现有的使用 window.opener 的身份验证流程在此版本发布时能够正常工作?
-
从 16.0.8110.1000 及更高版本开始,在 window.open 中打开的窗口将在默认浏览器中打开。 (Chrome、Edge 等)。如果您需要访问该窗口,则对 window.open 的调用必须在 AppDomains 列表中,并且 URL 必须是 https。
-
我们的域在 AppDomains 列表中,我们使用的是 https。我们已经检查并确认该窗口正在 IE 中打开。但是,我们仍然无法访问 window.opener。还有什么可以阻止我们访问 window.opener 的吗?
-
您应该能够使用 Dialog API,即使您的页面进行了多次重定向,只要它最终重定向回加载了 office.js 的页面,以便能够向插件发送消息.
标签: outlook-addin outlook-web-addins outlook-2016