注册 Office.EventType.ItemChanged 时 Outlook WebAddin 引发内部服务器错误

2023-12-14

在我的 Outlook WebAddin 中,我尝试使用以下代码注册邮件 ItemChange 事件。

    Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, mailItemSelectionChanged, [], function (result) {
            if(result && result.status != 'succeeded'){
                console.error('result => ' + result);
             }
});

每当用户在固定模式下更改邮件时,我都会第一次收到邮件更改事件。然后,如果对话发生变化,我将重新加载插件位置.reload()清除缓存并加载新鲜的插件。

重新加载插件后,无法注册 mailItemChange 事件并抛出以下错误:

{“code”:5001,“message”:“发生内部错误。”,“name”: “内部错误”}

它在浏览器和某些 Windows 计算机中失败(在许多其他情况下工作)。

展望诊断 :

{“主机”:“Outlook”,“平台”:“OfficeOnline”,“版本”: “16.0.9215.1000”}


我可以找出与 Office.EventType.ItemChanged 事件注册相关的以下行为:

  1. 您不能注册多个事件处理程序。大多数人在第二次尝试注册事件处理程序时都会遇到错误,这样第一个事件处理程序就不会被取消注册。
  2. 事件处理程序的注册寿命超出了加载项网页的寿命。这意味着当您的加载项卸载当前网页并重新加载相同或不同的网页(即导航到另一个网页)时,事件处理程序的注册仍将保留。
  3. 取消注册事件处理程序时,您不仅必须提供处理程序函数的名称,还要确保该函数与您用于注册事件的函数完全相同。换句话说,如果您在重新加载网页后尝试取消注册事件处理程序,则处理程序函数的对象不相同,因此事件处理程序不会被取消注册。
  4. 当 Outlook 关闭加载项窗格时,事件处理程序注册会丢失。

因此,在您的情况下,您需要在调用 location.reload() 之前取消注册事件,如下所示。

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;
        });
    });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注册 Office.EventType.ItemChanged 时 Outlook WebAddin 引发内部服务器错误 的相关文章

随机推荐

  • 难以理解脚本中的参数替换

    我试图理解 bashscript其前四行是 bin sh SCRIPT basename 0 sed s CONFIG 1 HOME SCRIPT DIR 2 HOME Documents 我知道最后两行正在对作为脚本参数 1 和 2 输入
  • Kivy Apk Buildozer:ReferenceError:弱引用对象不再存在

    谁能告诉我为什么我的应用程序崩溃了 很奇怪的是 当我第一次运行我的应用程序时 它没有崩溃 但下次我运行它时它会崩溃 我得到这样的东西 我正在使用 KIVYMD KIVY SOCKET KIVY MAPVIEW SQLITE3 下面是我通过
  • 将Holoeverywhere添加到Android Studio中的项目中

    我是 Gradle 和 Android Studio 基于 Intellij Idea 的 IDE 的新手 我的问题是纠正导入 Holoeverywhere 到项目 我读了很多类似的主题 但他们没有给出我的问题的解决方案 类似主题 Andr
  • 图像在悬停时移动 - 铬不透明度问题

    我的页面似乎有问题 http www lonewulf eu 当鼠标悬停在缩略图上时 图像会向右移动一点 并且这种情况仅发生在 Chrome 上 My css img ms filter progid DXImageTransform Mi
  • 没有 cookie 的 Laravel 会话

    我有一个应用程序 允许用户登录并将商品添加到购物篮 但是如果用户关闭了 cookie 则此功能将不再起作用 我检查过 Facebook 结果发现他们也需要启用 cookie 才能正常工作 所以我的问题是 是否可以在没有 cookie 的情况
  • 验证 Firebase 键是否为整数

    这是数据库架构 规则如下 notifications year read false write data exists month read false write data exists day read false write dat
  • 仅根据索引计算第 N 个多重集组合(具有重复)

    我怎样才能仅根据它的索引来计算第 N 个组合 应该有 n k 1 k n 1 种重复组合 with n 2 k 5 you get 0 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 1 1 3 0 0 1 1 1 4 0 1
  • 构建后事件执行 PowerShell

    是否可以使用构建后事件设置 NET 项目来执行 powershell 脚本 我正在使用这个脚本来生成一些文件 我还可以将它是调试版本还是发布版本传递给脚本 举一个这样的例子就太好了 这是一个例子 首先 您必须意识到必须配置 PowerShe
  • 检查卸载前是否保存了更改

    我有以下 JavaScript 编辑 包含更改已保存的分配 var changesSaved true document ready function applyChanges click function e e preventDefau
  • HttpClient 正在发送额外的 cookie

    运行 UWP 应用 所以我有一个 HttpClient 及其关联的处理程序 我正在向网站发出请求 传入指定的标头 并使用指定的 CookieContainer 该 CookieContainer 在请求开始时为空 当我发送请求时 Fiddl
  • 如何抑制Spyder编辑器中的某个警告?

    在我输入该行后 Spyder 中的编辑器总是立即向我发出有关未使用的导入 变量的警告 我想抑制这样的警告 我怎么做 我希望我在 Spyder 编辑器中打开的每个文件都发生这种情况 不喜欢本地修复 我尝试添加 disable pylintrc
  • 设置名称时抛出异常

    我在设置名称时遇到强制转换异常 Object customers customerRepository getCustomerName Id Customer row new Customer row setName String cust
  • 是否可以使用标准库在 Go 中嵌套模板?

    如何在 python 运行时中获取像 Jinja 那样的嵌套模板 TBC 我的意思是如何让一堆模板从基本模板继承 只需归档基本模板块 就像 Jinja django templates 所做的那样 是否可以只使用html template在
  • 如何从 qdateEdit 获取用户输入并从 postgres 的数据库中选择它

    我想知道如何在 QDateEdit 中获取用户输入并在 postgres 的表中选择它 这是我的代码 def date self try date self dateEdit date print date conn psycopg2 co
  • 如何将 std::sort 与结构向量和比较函数一起使用?

    谢谢你的C 中的解决方案 现在我想使用 std sort 和向量在 C 中实现这一点 typedef struct double x double y double alfa pkt vector lt pkt gt wektor 使用pu
  • 如何在R中找到超过10个变量的第二、第三和第n最大行?

    我有一个包含 20 个变量的数据集 我需要使用其中的 10 个变量来查找第一个 第二个 第三个 第 n 个最大值 变量是x1 to x10 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 1 2 0 3 4 5 6 7 8 5
  • 全局临时表 - SQL Server 与 Oracle

    我使用 Oracle 11g 全局临时表 因为我需要一个解决方案 可以将行添加到临时表中以进行联接 并且我只希望添加到临时表中以包含 Oracle 连接 会话的行 我在 Oracle 中使用全局临时表 因为我希望该表存在于会话之间 这样就不
  • 检查每个进程和子进程的内存

    我试图创建一个脚本来显示 mysqld 的每个进程和子进程的使用量 您可以在我的代码中看到我做了什么 bin bash file contains the output of pstree mysql a p awk print 1 sed
  • Astar 可以多次访问节点吗?

    我一直在阅读维基百科的 Astararticle 在他们的实现中 他们检查每个节点是否在closed设置 如果是这样 他们会跳过它 是不是有可能 如果启发式是可以接受的 但是NOT一致 我们可能需要重新访问一个节点两次 或更多次 才能改进它
  • 注册 Office.EventType.ItemChanged 时 Outlook WebAddin 引发内部服务器错误

    在我的 Outlook WebAddin 中 我尝试使用以下代码注册邮件 ItemChange 事件 Office context mailbox addHandlerAsync Office EventType ItemChanged m