如何在用户不选择整个内容的情况下检测内容控件?

How can I detect a content control without the user selecting the whole thing?

背景

我在我的 word 文档中插入了一堆内容控件。每个内容控件都是一些文本,例如“你好世界”。

我正在尝试做什么

当用户将光标放在内容控件中时,我想在我的加载项中访问内容控件的详细信息。

我试过的

我在启动时运行这个。

Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged, () => {
    Word.run( async (context) => {
        const range = context.document.getSelection();
        console.log({range});
        const contentControls = range.contentControls;
        contentControls.load("items");
        await context.sync();
        console.log('contentControls.items', contentControls.items)
    })
})

问题

如果用户在内容控件中弹出光标,则不会报告“项目”。但是,如果用户突出显示整个内容控件,则会正确报告“项目”。

问题

有没有一种方法可以检测用户是否在内容控制范围内,而无需他们 select 整个过程?

尝试使用 Range.parentContentControl(或 parentContentControlOrNullObject)获取对包含内容控件的引用。

例如,

  const parentContentControl = range.parentContentControlOrNullObject;
  await context.sync();
  if (parentContentControl.isNullObject) {
      console.log("The cursor is not in a content control")
  }
  else {
      console.log('parentContentControl', parentContentControl);
  }