我最近迷上了LanguageTool和Grammarly等工具如何在屏幕上拼写错误的单词上显示红色下划线。我想做一些类似的事情,但在第一次显示单词下划线后,在悬停单词时显示带有同义词等内容的丰富弹出框。
这与浏览器扩展无关,请查看我提供的Grammarly SDK插件和LanguageTool API示例的链接。
我知道Grammarly正在使用带有插槽的Shadow DOM来 Package 文本区域,但我仍然不知道他们如何能够(有效地)确定特定单词在文本区域中的位置。
当我检查它的时候,两个副本都没有显示克隆的HTML,我认为他们可能会这样做,以便将文本分解为标记,他们可以为这些标记获得边界矩形--但似乎不是这样。
使用<grammarly-editor-plugin><textarea></textarea></grammarly-editor-plugin>
x1c 0d1x的结果
LanguageTool example:
我尝试使用Canvas API来获取特定单词的维数,但这不足以确定它在文本区域中的位置,因为该单词可能位于比第一行更大的行上。
为了使该方法工作,他们必须获得文本区域中的所有单词,计算它们的维度,并且使用文本区域的维度来确定目标单词在文本区域中的哪一行;连同单词的尺寸,特别是宽度,它们将在文本区域中具有x和y位置。2然而,这似乎太昂贵和缓慢,以至于不能像下划线显示的那样快速完成。
我可以使用contenteditable,只需要将每个单词 Package 在它自己的范围内,但这似乎并不理想。
还有人知道他们还能怎么确定一个词在文本区域中的X和Y位置吗?
1条答案
按热度按时间62o28rlo1#
你让我很兴奋,但事实证明这并不是一个很大的挑战