我的办公室插件中的事件处理程序遇到问题。以下是我从Microsoft网站获得的示例代码,以解释我的意思。
我有一个清单文件,该文件使用了发送挂钩和基于单击的事件触发。
我的按钮叫appendMessageBodyOnClick
,然后我叫appendMessageBodyOnSend
。两种功能主要做同样的事情。无论如何,我永远都不想阻止发送电子邮件。
问题是我认为事件对象没有正确清理。
场景1
当我点击我的按钮时;会调用event.completed()
,然后在我尝试发送消息后,它说我的应用阻止了该消息,但是当我再次尝试发送消息时,消息却通过了。
场景2 当我将主题留空,然后发送消息时,如预期的那样,我会提示主题为空。如果我取消发送此便笺上的消息,然后单击我的按钮,则该消息将尝试发送,就像我单击“发送”一样。
我想这是某种形式或状态的清理问题。我在这里做什么错了?
Function-File.js
function appendMessageBodyOnClick(event) {
// Append string to message body
event.completed();
}
// In the following example, the checkMessage function has
// been registered as an event handler for ItemSend.
function appendMessageBodyOnSend(event) {
// Append string to message body
event.completed({allowEvent = true});
}
答案 0 :(得分:0)
不确定这是否有帮助,但是在理解如何表明事件已完全完成时,我也遇到了一些看似不一致的行为。一旦修复好边缘盒,它就会起作用。
一个建议:将字符串追加到消息正文应该是一个异步函数。从回调函数内部调用event.completed()。 (即:确保在调用event.completed()时,没有其他待处理状态-类似于另一个异步结果)
类似以下内容:
Office.context.mailbox.item.body.setAsync("new body", function(asyncResult) {
// handle success and failure
event.completed()
});
与您的方案2相同,请确保在最后调用event.completed()。