为type.js实现按需输入拼写检查器UI

时间:2018-06-25 22:57:01

标签: javascript nw.js

我正在开发一个使用RTF编辑器的nw.js应用程序。我想使用typo.js api [1]实现按需输入的拼写检查。不幸的是,此api没有附带UI,并且由开发人员来实现。

我会提到,虽然nw.js中现在提供了Chromium内置的拼写检查器,但由于我现在不愿讨论的原因,我不希望使用它。

编辑器是一个contenteditable div元素,目前我进行拼写检查的工作是使用treeWalker遍历contenteditable元素的文本节点,解析出字符串并进行拼写检查。一旦我确定了拼写错误的单词的节点和偏移量,便可以使用range.getBoundingClientRect来获取单词的几何位置,从而知道在哪里放置装饰(例如“弯曲的下划线”或您拥有的东西),这很方便。 / p>

这方面的挑战是如何使UI响应某种拼写检查器的能力,这些检查器可能是用较低杠杆语言编写的。我尝试过:

1)创建显示为下划线的固定位置div,并将其附加到document.body,然后使用左/上将其正确放置。

2)拆分拼写错误的单词的文本节点,并使它们成为样式跨度的子代,并将其插入到位置。

1的问题是找到一种自然的(但不太笨拙)的方法来使装饰跟随拼写错误的单词的位置变化,例如在拼写错误的单词之前插入文本,滚动或调整大小。

2解决了这个问题,但是我宁愿不弄乱编辑器的DOM。一方面,在复制并粘贴到另一个应用程序时,通常可以找到它。

我希望我对如何完成此任务不熟悉。任何和所有建议,将不胜感激。

[1] https://github.com/cfinke/Typo.js/

0 个答案:

没有答案