Office JS getSelectedDataAsync 查找当前选择的 parent

Office JS getSelectedDataAsync find parent of current selection

使用 Office JS,我可以使用 getSelectedDataAsync() 获取当前选择,但我试图找到我选择的 parents 和祖先,以确定选择是否在 table 单元格或段落。

有办法吗? 如果(选择在 TableCell 中) 做这个 别的 这样做

感谢大家的帮助,这是更新后的代码以使其正常工作:

Word.run(function (context) {
    var range = context.document.getSelection();
    context.load(range);
    return context.sync().then(function () {
        var parentTableCell = range.parentTableCellOrNullObject;
        context.load(parentTableCell);
        return context.sync().then(function () {
            if (parentTableCell.isNullObject)
                console.log("Not in a table cell");
            else
                console.log("In a table cell");
        });
    });
});

所以简而言之,Document 对象上有一个名为 getSelection 的方法,它是 returns 一个范围。

范围包含段落集合和 table 集合。如果这些都被填满,应该会给你答案。

为 Stewart 的回答添加更多细节:是的,请使用 document.getSelection 获取选择范围,目前您可以从那里获取:

  1. parentBody - 如果文档中有多个部分,则很有用。
  2. parentContentControl - 查明所选内容是否在内容控件中
  3. 父表
  4. parentTableCell

要找出所选内容中包含的内容,请使用集合:

  1. 段,
  2. 内容控件,
  3. 表格,
  4. 内联图片,
  5. 列表,

等 在这里查看帮助

查看此示例,了解如何访问 table 单元格。 请注意,在此示例中,如果选择不在 table 单元格内,则会引发异常。如果你想验证你需要使用方法的 parentTableCellOrNullObject 风格..你可以检查是否返回了 nullObject(意味着选择不在 table)

   Word.run(function (context) {
        context.document.getSelection().parentTableCell.body.insertText("Hello World","end")
        return context.sync()
     })

谢谢!