确保打开对话框

问题描述 投票:0回答:0

我有一个 Office 加载项。在加载项的某些页面中,我需要实现一个按钮来打开 Stripe 结账会话。由于 iframe 不支持 Stripe Checkout,我想最好的选择是在对话框中打开它。

我尝试使用类似于以下的代码。

Office.context.ui.displayDialogAsync(
  url,
  { height: 90, width: 60 },
    asyncResult => {
      console.log("asyncResult", asyncResult)
    }
)

当我们第一次点击按钮时,它会显示一个权限提示,说插件要显示一个新窗口,

Allow
Ignore
。然后我们点击
Allow
,会话就可以在对话框中打开了

但是我们关闭session对话框后,再次点击按钮,权限提示没有弹出,对话框也没有弹出。在控制台中,我可以看到

caught (in promise) Error: Timeout: could not perform cross-storage:get
.

我也尝试添加

promptBeforeOpen: false
。有了这个选项,就没有权限提示了,我们可以多次打开关闭对话框。

我觉得在这个场景下,最重要的是能够在所有环境中打开(和关闭)对话框,并且不被阻塞。有没有权限提示是次要的。所以我的问题是

  1. 没有
    promptBeforeOpen: false
    ,为什么我不能再次打开对话框以及如何解决这个问题?
  2. 有了
    promptBeforeOpen: false
    ,我们能不能保证对话框不会被屏蔽?
ms-office office-js
© www.soinside.com 2019 - 2024. All rights reserved.