Outlook OnSend 插件是否支持 Service Worker?

保罗·尼尔尼

我正在编写一个 Outlook OnSend 插件(新式 Web 插件,而不是旧式 COM),并希望在用户离线时使用 Service Worker 来提供功能。我已经编写了一个插件,当我在 Edge 中点击插件的 html 页面时,我可以看到正在安装服务工作者并成功缓存插件文件。

但是,当我在 Outlook Desktop 中运行插件时,似乎没有安装 Service Worker。我正在通过运行 Fiddler 来测试这个,我可以看到每次运行时都在请求添加文件,而不是来自服务工作者应该创建的缓存。

我的插件 HTML 引用了一个 main.js(见下文),它试图注册服务工作者。为了提供一些跟踪/故障排除能力,我对服务进行了 ajax 调用。这告诉我的是:

  • 对 Service Worker 支持的检查返回 true
  • 对 navigator.serviceWorker.register 的调用永远不会返回(成功或失败)
  • 使用 Fiddler,我从未看到对引用的“sw.js”文件的请求。我确实看到一个边缘进程 (microsoftedgesh) 尝试打开到我的服务器的 https 连接,但这不会请求任何文件。fiddler 中的所有其他流量都来自 Web 视图主机组件

Outlook 插件是否支持 Service Worker?我正在运行 Outlook 版本 2004(12730.20270 点击运行)和 Windows 1909,所以我希望 Outlook 使用 Edge 而不是 IE 11,因此有服务工作者支持。

作为参考,我的 main.js 如下所示:

if ('serviceWorker' in navigator) {
  sendMessage('1');
  try {
    navigator.serviceWorker.register('sw.js').then(function(registration) {
      sendMessage('2'); // Never sent
    }).catch(function(error) {
      sendMessage('3'); // Never sent
    });
  }
  catch(err) {
    sendMessage(err.message);
  }
}
else {
    sendMessage('4');
}

function sendMessage(message) {
    $.ajax({
        url: "../api/schedule",
        type: "POST",
        crossDomain: true,
        //contentType: "jsonp",
        contentType: 'application/json; charset=utf-8',
        data: message
    });
}
Outlook 插件团队 - MSFT

插件目前不支持 Service Workers,在不久的将来,任何 Service Workers 的使用都将被禁用。我们在用户语音页面上跟踪插件功能请求。请在那里添加您的请求。当我们进行规划过程时,会考虑用户语音的功能请求

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章