我有一个 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
。有了这个选项,就没有权限提示了,我们可以多次打开关闭对话框。
我觉得在这个场景下,最重要的是能够在所有环境中打开(和关闭)对话框,并且不被阻塞。有没有权限提示是次要的。所以我的问题是
promptBeforeOpen: false
,为什么我不能再次打开对话框以及如何解决这个问题?promptBeforeOpen: false
,我们能不能保证对话框不会被屏蔽?