【问题标题】:Force Outlook Add-in popup to open with embedded browser强制 Outlook 加载项弹出窗口使用嵌入式浏览器打开
【发布时间】:2022-01-13 05:21:42
【问题描述】:

我发现我的 Outlook 加载项(在 Outlook 2016 中运行)存在问题,当我使用 window.open 打开弹出窗口时,它有时会在用户的默认浏览器(例如 Chrome)中打开,而不是在运行的浏览器中打开加载项(例如 Outlook 2016 中嵌入的 IE11 Web 视图)。这是一个问题,因为它会阻止弹出窗口与加载项通信,而这是保护点击劫持所必需的。

有没有办法强制在运行加载项的同一浏览器中打开弹出窗口,而不使用 Dialog API?我想支持需求集 1.3。

【问题讨论】:

  • 我不知道为什么它会在 Chrome 中打开。来自 Outlook 的 window.open 调用应始终在 IE 中打开。但是,如果您单击任务窗格上的链接,该链接将在您的默认浏览器中打开。
  • @Carbo 很不幸,我希望我能做些什么来解决这个问题。只是为了确认一下,您是说 window.open 调用应该始终在 IE 中打开,但链接(即 标签)可能不会?
  • 看来我错了。我仍在研究它,但我能够从加载项任务窗格中获取 window.open 以通过使 FireFox 成为 Windows 10 中 http 和 https 协议的处理程序来从 Outlook 2016 打开 FireFox。任务窗格上的链接也在 Firefox 中打开。
  • @Carbo 对此有何更新?只是想知道我的加载项是否可以采取任何措施来防止这种情况发生。
  • 对话框无法使用 Office.js 进行 API 调用。它只能使用Office.context.ui.messageParent API。父级可以使用这些消息来利用父级中的 Office.js API。

标签: outlook-web-addins


【解决方案1】:

您应该检查displayDialogAsync API 是否存在。它是在需求集 1.4 中添加的。

如果存在,我们建议使用它。请注意,对话框只能调用Office.context.ui.messageParent API。此 API 允许对话框与加载项进行单向通信。加载项可以使用这些消息来利用 Office.js API。

如果displayDialogAsync API 不存在,您可以利用 window.open。但是,在这种情况下,不会启动默认浏览器。

【讨论】:

    【解决方案2】:

    随着 2022 年文档的更新。

    API 文档已从 dev.office.com(这些链接不再有效)移至 docs.microsoft.comhere 你会找到一个关于如何使用这个 api 的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多