【问题标题】:Create custom Range in Word Javascript API / Office.js在 Word Javascript API / Office.js 中创建自定义范围
【发布时间】:2017-07-06 05:33:07
【问题描述】:

我了解 Word Javascript API 的许多方法返回 RangeRangeCollection。但是,有没有构造函数可以让开发者直接创建一个新的Range

我的用例是我需要查看每个段落、识别错误并在语法上突出显示它们。因此,我想使用 API 获取段落的纯文本,自行查找错误,然后使用该信息创建一个 Range,我可以用它来装饰文本(或添加一个 Bounday /ContentControl 以供稍后参考)。

【问题讨论】:

  • 好问题。同样的问题。

标签: javascript ms-word office-js


【解决方案1】:

有几个选项供您选择。

一个。使用搜索 - 您可以将其范围限定为段落。您还可以使用 range.compareLocationWith 来比较找到的范围是否相同并删除欺骗。所以这个想法是你抓住一个段落,分析,找到一个问题,进行搜索以获得范围(并确保是你需要的范围)。一旦有了范围,您就可以应用格式、插入内容控件或插入、替换内容。

b.使用split - 是一种可用于将段落分解为单词(每个单词是一个范围)的方法。

c。 ExpandTo - 将给定范围扩展到另一个范围。

d。在任何对象上,您都可以使用 .getRange() 来获取其关联范围。

【讨论】:

  • 奇怪的是没有明显的方法来制作Range
  • API 上的几乎所有方法都返回一个范围,但很想知道您的期望。
  • 由于我在要修饰的错误的文本中得到了偏移量,我希望能够通过 var range = new Range(startOffset, endOffset); 之类的东西在文档上创建一个范围,或者在带有某些东西的段落上创建一个范围像var range = paragraph.getRange(startOffset, endOffset); 无法创建范围,似乎无法验证我从searchsplit 返回的Range 是否与我想要装饰的单词相同,因为我不能在没有Range 对象的情况下使用compareLocationWith。第 22 条。
  • 一般来说,支持偏移量和开始/结束位置的问题在于,它是一种超级不可靠的引用范围的方式,而且很容易成为一个坏故事。这一直是 Word 开发人员一直以来痛苦的根源,我们明确决定不支持这种邪恶的设计。现在你可以通过paragraph.search()获得你的范围
  • @JuanBalmori,(1) compareLocationWith 的第一个链接已损坏。 (2) 从答案中不清楚为什么 compareLocationWith 对我们有帮助。如果我们有 range.getStartOffset 或 range.getEndOffset 会有所帮助,但我们没有 (3) 搜索的问题是假设您想在偏移量 [100,103] 中标记单词“the”。但是随后用户继续写作,并在文本之前的某处添加单词“the” - 然后 .search 方法被破坏了。如果他有偏移量,我们可以使用旧文本版本与新文本版本之间的差异来修复偏移量,并手动移动范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 2018-06-10
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多