我在任务窗格代码中有一个函数
showSendingState()
,它应该更改任务窗格的整个 UI 以显示它正在发送和其他一些内容。它需要位于任务窗格中,而不是位于事件处理程序中。
因此,在用户单击“发送”后,我希望运行此功能。
可以吗?
我现在能想到的最好方法是实现一个标志和轮询机制,任务窗格中的一个函数将定期轮询
customProperties
的 mailItem
,以获取触发 OnMessageSend
时设置的标志。如果找到,它将运行 showSendingState()
函数。
另一种方法是在任务窗格中注册
RecipientsChanged
事件处理程序,并在 OnMessageSend
事件中设置密件抄送。但这需要更改 mail
的数据并保存。
如果有一个事件可以在
OnMessageSend
事件处理程序中触发,并且不需要更改邮件的数据,那就是最理想的。
是的,这是可以实现的。正如您所建议的,发送部分在加载项的基于事件的部分中沙箱化,而任务窗格在不同的上下文中运行。
我们可以使用
Office.context.mailbox.item?.sessionData
https://learn.microsoft.com/en-us/javascript/api/outlook/office.sessiondata?view=outlook-js-preview 在事件端设置一个flag,然后任务窗格可以轮询会话数据以推断项目是否正在发送。
在任务窗格中,需要按一定时间间隔轮询 sessionData,因为您无法使用回调函数订阅 sessionData 更改。