Ms word 从Word office加载项中的当前位置进行搜索

Ms word 从Word office加载项中的当前位置进行搜索,ms-word,office-js,Ms Word,Office Js,假设您希望实现对单词外接程序的自定义搜索,以在光标的当前位置之后查找单词foo的第一个实例。你可以这样做: 使用context.document.getSelection()获取光标位置的范围 使用context.document.body.search('foo')获取包含单词foo的所有实例的范围列表 迭代所有的foo范围,使用compareLocationWith()查看foo范围是否位于当前位置之后,并选择位于当前位置之后的第一个foo范围 使用Range.select()转到步骤3中选

假设您希望实现对单词外接程序的自定义搜索,以在光标的当前位置之后查找单词
foo
的第一个实例。你可以这样做:

  • 使用
    context.document.getSelection()
    获取光标位置的
    范围
  • 使用
    context.document.body.search('foo')
    获取包含单词
    foo的所有实例的范围列表
  • 迭代所有的foo范围,使用
    compareLocationWith()
    查看foo范围是否位于当前位置之后,并选择位于当前位置之后的第一个foo范围
  • 使用
    Range.select()
    转到步骤3中选择的foo范围

  • 上述方法似乎可行,但有点复杂。有更简单的方法吗?

    您可以用一行代码完成所需的场景,如下所示

    首先,您需要建立从当前位置到文档结尾的搜索范围。(在这种情况下,我假设这是您需要的,例如,它也可以是当前段落的结尾)。我们通过将当前选择扩展到文档末尾来实现这一点。然后我们只需进行搜索并获得第一个匹配项(通过使用非常有用的getFirst()方法!)。然后用黄色突出显示


    context.document.getSelection().expandTo(context.document.body.getRange(“end”).search(“foo”).getFirst().font.highlightColor=“yellow”谢谢胡安,这太棒了!是否也有一条线可以反向搜索?或者您是否需要执行此操作
    matches=context.document.getSelection().expandTo(context.document.body.getRange(“开始”))。搜索(“foo”)
    匹配。加载(“项”)
    ,然后在
    then()
    块中处理?