У меня возникла та же проблема.Мысль перерегистрировать обработчик событий, и он заработал.
Вот код, который я использую.
Office.onReady(function() {
//console.log('In Office.onReady');
if(!Office.context.mailbox) {
console.log('Run inside Outlook to be able to use it.');
return;
}
console.log('Running in Office Add-in');
// Set up ItemChanged event
Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, selectedMailItemChanged);
console.log('Item Change event registered.');
doSomething(Office.context.mailbox.item);
//console.log('Page initialized');
});
function selectedMailItemChanged(eventArgs) {
console.log('Another email message selected');
if(Office.context.mailbox.item != null) {
doSomething(Office.context.mailbox.item);
}
else {
console.log('No email is selected.');
Office.context.mailbox.removeHandlerAsync(Office.EventType.ItemChanged, {handler: selectedMailItemChanged}, function(result) {
console.log('Item Change event unregistered.');
Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, selectedMailItemChanged);
console.log('Item Change event re-registered.');
});
}
}
function doSomething(item) {
// do something.
}
Однако в другой, более сложной ситуации, это не такработать как положено.У меня есть две страницы в моей надстройке.Панель навигации позволяет перейти на любую из страниц.Мне нужно событие изменения элемента на обеих этих страницах.Когда я перехожу на другую страницу, тот же код обработки события изменения элемента перестает работать на этой другой странице.Если я перезагружаю OWA и продолжаю работать на одной странице надстройки, обработка события изменения элемента работает.