我在办公室Addin中的活动处理程序有问题。以下是我从Microsoft网站获得的示例代码,以解释我的意思。我有一个清单文件,该文件使用日期挂钩以及基于点击的事件触发。我的按钮呼叫appendMessageBodyOnClick
和ONSEND我致电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});
}
不确定这是否会有所帮助,但是我也面临着一些看似不一致的行为,同时了解该事件已完全完成。一旦我修复了边缘箱,它就可以了。
一个建议:将字符串附加到消息主体应该是异步函数。从回调函数内部调用event.completed()。(即:确保何时调用event.completed(),没有其他等待的方式 - 另一个异步结果)
类似以下内容:
Office.context.mailbox.item.body.setAsync("new body", function(asyncResult) {
// handle success and failure
event.completed()
});
对于您的方案2也是如此,请确保event.completed()在最后调用。