MS Word 在线插件:如何检测焦点?

MS Word Online add-in: How to detect focus?

在开发 Microsoft Word Online 插件时,我的团队需要检测文档 gained/regained 的焦点(ETA:触发依赖于此知识的其他功能)。在这种情况下,Microsoft 似乎已经严格锁定了可编写脚本的能力——所有 window.on* 函数都被 null 替换,所有错误处理代码都被深度混淆,等等。到目前为止,我们的努力一直受挫。

简单地将 window.on焦点设置到一个新函数会导致加载项无法正确加载,可能是因为它触发了代码分析器,因为它不安全,但很难判断。

Microsoft Word Online JavaScript API 中也没有任何内容直接提供此功能。脚本可以使用提供的方法轻松检测文档选择何时更改,但这似乎与此区域的文档功能有关。 (显然简单地感知文件变化是行不通的。)

在这种情况下,检测文档 and/or window 焦点的最佳方法是什么?谢谢。

document.onvisibilitychange 事件可用作所需功能的粗略近似值。

document.onvisibilitychange = (ev) => {
  if (document.visibilityState == "visible") {
    // Handle pseudo-focus event
  }
  else {
    // Handle pseudo-blur event
  }
};

这可以根据需要与 Office Online API DocumentSelectionChanged 事件结合使用,以进一步细化以感知何时将光标放置在 Word 文档中。 (也就是说,仅当浏览器 document.onvisibilitychange 事件触发且 document.visibilityState 等于“可见”后第一次触发 Office DocumentSelectionChanged 事件时才触发焦点获得逻辑。)