小编Tom*_*ell的帖子

如何在不同的Word.run上下文中使用范围?

我为单词创建了一个任务窗格插件,该插件运行搜索并以列表形式向用户显示有关结果的信息。当用户单击列表中的某个项目时,我想选择字词范围以向用户显示该项目的位置。然后,该插件将允许用户在范围上执行其他任务,例如更改字体颜色。

我可以使用以下功能运行搜索并获取显示范围:

function runSearch(textToFind) {
  var items = [];
  return Word.run(function(context) {
    var options = Word.SearchOptions.newObject(context);
    options.matchWildCards = false;

    var rangesFind = context.document.body.search(textToFind, options);
    context.load(rangesFind, 'text, font, style');
    return context.sync().then(function() {
      for (var i = 0; i < rangesFind.items.length; i++) {
        items.push(rangesFind.items[i]);
        context.trackedObjects.add(rangesFind.items[i]);
      }
      return context.sync();
    });
  })
  .then(function() {
    return items;
  });
}; 
Run Code Online (Sandbox Code Playgroud)

但是,我在选择用户点击范围时遇到困难。我试过使用range上下文:

function selectRange(range){
  range.select();
  return range.context.sync();
}
Run Code Online (Sandbox Code Playgroud)

或在新的Word.run上下文中使用范围:

function selectRange(range){
  return Word.run(function(context) {
    context.load(range);
    return context.sync().then(function(){
      range.select();
      return context.sync();
    });
  });
}
Run Code Online (Sandbox Code Playgroud)

我遇到了一种潜在的方法,该方法涉及为每个搜索结果创建一个内容控件,然后selectRange在新的上下文中重新加载该函数中的所有内容控件,并找到匹配的控件,但是当我已经有了范围时,这似乎效率很低。

在不同的Word.run上下文中重用范围的最佳方法是什么?

ms-word apps-for-office office-js

3
推荐指数
1
解决办法
1433
查看次数

标签 统计

apps-for-office ×1

ms-word ×1

office-js ×1