未打开任务窗格时用户关闭撰写邮件的捕获事件是否存在?
解决方案
可用事件说明
你需要的事件无需固定任务窗格即可捕获,Office JS 原生提供了对应能力,覆盖你提到的两个场景:
- 退出邮件撰写场景:使用
Office.EventType.ItemClose事件,会在用户关闭撰写窗口、丢弃草稿、发送完成关闭窗口等所有退出撰写状态的场景下触发 - 切换其他邮件场景:使用
Office.EventType.ItemChanged事件,会在用户在邮箱主界面切换选中不同邮件时自动触发
前置配置要求
不需要用户手动固定任务窗格,你只需要在插件的manifest配置文件中,提前声明对应事件的监听权限,允许插件在后台运行事件回调即可。
注意事项
- 系统对事件回调的执行时长有限制,不要在回调中运行超过时间阈值的耗时逻辑,避免被系统强制终止
- 如果你的逻辑是异步执行的,要确保异步流程走完再结束回调,避免逻辑被中断
基础示例代码
Office.onReady((info) => { if (info.host === Office.HostType.Outlook) { // 注册撰写窗口关闭事件监听 if (Office.context.mailbox.item) { Office.context.mailbox.item.addHandlerAsync( Office.EventType.ItemClose, handleItemClose, (result) => { if (result.status !== Office.AsyncResultStatus.Succeeded) { console.error("注册ItemClose事件失败: ", result.error.message); } } ); } // 注册邮件切换事件监听 Office.context.mailbox.addHandlerAsync( Office.EventType.ItemChanged, handleItemChange, (result) => { if (result.status !== Office.AsyncResultStatus.Succeeded) { console.error("注册ItemChanged事件失败: ", result.error.message); } } ); } }); // 退出撰写状态时执行的自定义逻辑 function handleItemClose(event) { // 此处写入你的业务代码 // 逻辑执行完成后调用completed方法通知系统 event.completed(); } // 切换邮件时执行的自定义逻辑 function handleItemChange(event) { // 此处写入你的业务代码 }
内容的提问来源于stack exchange,提问作者albeiro
相关产品推荐
相关产品推荐

