【问题标题】:Outlook Add-In API does not fire the ItemChange event consistently on Firefox/ChromeOutlook 加载项 API 不会在 Firefox/Chrome 上一致地触发 ItemChange 事件
【发布时间】:2018-05-15 13:34:56
【问题描述】:

我们已在清单中为 Outlook 加载项启用任务窗格固定,并注意到除 Windows Outlook 2016 客户端外,现在 Outlook Office Online 中也提供固定支持。

然而,ItemChange 事件在切换邮件项目时似乎并没有被一致地触发(我无法辨别它何时被触发的任何韵律或原因)。

我们正在使用addHandlerAsync method 监听此事件。这是一个错误吗?

【问题讨论】:

  • ItemChange 在项目实际更改时触发,但在您只是更改选择时触发。
  • AddHandlerAsync 确实是使用它的正确方法。当您期望 itemchanged 事件被触发时,您能描述一下您在做什么吗?根据标题,这只发生在 OWA 而不是桌面客户端?还是两者兼而有之?请注意,OWA 在阅读窗格中有对话,而桌面客户端没有。 (有没有可能只有在两个地方之一切换消息时才看到该事件?)
  • @OutlookAdd-insTeam-MSFT 我们试图通过单击鼠标在邮件项目列表中选择一个新邮件项目(更改当前选择的邮件)。该行为仅在 OWA (Firefox/Chrome) 中观察到。很抱歉,我没有得到您评论中的最后一个问题。
  • 我无法在 OWA 中得到重现。具体来说,您正在单击邮件列表中的另一封 已读 邮件,并且该项目在阅读窗格中正在更改,但没有向您的加载项触发任何项目更改事件?但是在 Outlook 2016 桌面客户端中它工作正常吗? (请注意,如果您撰写“新邮件”,它不会触发该事件,因为读取/撰写场景在清单中单独处理)。你能用一个非常简单的插件来重现这个,只注册插件而不做任何其他事情吗?即只是调用:
  • Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, function (result) { console.log("received item change"); });

标签: office-js outlook-web-addins


【解决方案1】:

我遇到了同样的问题。考虑重新注册事件处理程序并且它起作用了。

这是我正在使用的代码。

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.
}

但是,在另一种情况下,您可以从加载项中导航到另一个网页,而加载项仍处于打开状态,请参阅this answer

【讨论】:

    【解决方案2】:

    事实证明,这种行为的一个原因(原因?)是从选择控件中进行选择。在 Office 16.0.13001 中一直是 fixed

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 1970-01-01
      • 2013-09-22
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      相关资源
      最近更新 更多