我可以找出以下关于更改了Office.EventType事件登记:
-
-
事件处理程序的注册在外接程序的网页生命周期之外。这意味着,当外接程序卸载当前网页并重新加载相同或不同的网页(即,它导航到另一个网页)时,事件处理程序的注册仍将保留。
-
-
当Outlook关闭加载项窗格时,事件处理程序注册将丢失。
因此,在调用位置。重新加载()如下所示。
Office.context.mailbox.removeHandlerAsync(Office.EventType.ItemChanged, {handler: mailItemSelectionChanged}, function(result) {
if (result.status === Office.AsyncResultStatus.Failed) {
console.log('Item Change event could not be unregistered.');
console.log(result.error);
}
else {
console.log('Item Change event unregistered successfully.');
}
});
setTimeout(function() {location.reload();}, 100);
那些想要从外接程序导航到同一个或另一个网页的用户,可以将单击事件处理程序附加到定位标记(或按钮)上,以确保在卸载当前页面之前已注销ItemChanged事件处理程序。我使用以下代码完成此操作:
$(document).ready(function() {
$('.NavBarContainer a').toArray().forEach(function(anchor1, index) {
$(anchor1).click(function(event) {
if(itemChangeEventRegistered) {
unregisterItemChangeHandler();
setTimeout(function() {window.location = anchor1.href;}, 100);
return false;
}
return true;
});
});
});