CKEDITOR如何在span中查找和包装文本

时间:2015-04-15 14:20:33

标签: ckeditor

我正在编写一个CKEDITOR插件,需要在标签中包含某些文本。从webservice,我有一系列需要包装的项目。该数组只是纯文本字符串。如:

"[best buy", "horrible migraine", "eat cake"]

我需要在编辑器中找到此文本的实例,并将它们包含在span标记中。

这更复杂,因为文本可能会被标记。因此,“最佳购买”的HTML可能是

"<strong>best</strong> buy"

但是从Web服务返回的文本被删除了任何标记。

我开始尝试使用CKEDITOR.htmlParser()对象,这似乎是适度成功的。我能够捕获parser.onText事件并检查文本是否包含我的数组中的任何内容。

但后来我无法修改该文字。修改不会持久保存到源html。所以我认为使用htmlParser()是一个死胡同。

完成此任务的最佳方法是什么?

哦,作为奖励,我也不想在显示更改时丢失用户当前的光标位置。

1 个答案:

答案 0 :(得分:0)

这是我最近做的事情,它似乎到目前为止工作。

我创建了一个文本过滤规则,在项目数组中搜索文本中包含(或部分包含)的任何项目。如果是这样,它会将元素包裹在我的范围内。

这里的一个缺点是,我最后用两个带有标记的项目。但在我的用例中,这是可以容忍的。

然后我使用以下方式设置结果:

editor.document.getBody().setHtml(results);

因此,当读取此文本时,我还必须取消此标记。我是使用editor.dataProcessor.htmlFilter。

上的元素过滤器完成的

这似乎对我(迄今为止有限的)测试用例很有效。