调用 displayNewMessageFormAsync 时弹出窗口被阻止

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

在 Outlook Web 插件中,我调用 Office JS API 的

displayNewMessageFormAsync
方法来显示用于创建电子邮件的新表单,并使用给定的电子邮件地址填写电子邮件。但是在 Safari 和 Firefox 上,如果我不允许弹出窗口,这些浏览器将阻止打开这个新表单。另一方面,在 Chrome 中,它会打开新表单,但不会在浏览器中明确允许弹出窗口。

我的代码:

  private addRecipientToNewMail(recipient: string): void {
    this.mailbox.displayNewMessageFormAsync({ toRecipients: [recipient] },
    (result: Office.AsyncResult<void>) => {
      if (result.status === Office.AsyncResultStatus.Failed) {
        console.log(result.error);
      }
    });
  }

有趣的是,如果我在设置

displayNewMessageFormAsync
属性的地方调用带有
parameters
参数的
htmlBody
方法,那么在 Firefox 上将显示新表单,而不允许显式弹出窗口,代码示例:

this.mailbox.displayNewMessageFormAsync({ htmlBody: `<h1>Test</h1>` }, 
(result: Office.AsyncResult<void>) => {
  if (result.status === Office.AsyncResultStatus.Failed) {
    console.log(result.error);
  }
});

经过测试的浏览器:

  • 谷歌浏览器 - 版本 111.0.5563.64
  • Safari - 版本 15.6.1 (15613.3.9.1.16)
  • 火狐 - 110.0.1

我想有一个解决这个问题的方法,可以直接打开新的电子邮件表单,而无需在浏览器中手动启用弹出窗口。

office-js outlook-web-addins
© www.soinside.com 2019 - 2024. All rights reserved.