是否可以装饰在ckeditor中输入的部分文本?

时间:2013-01-08 04:10:36

标签: ckeditor

例如,在编辑文本时,是否可以使用范围为“红色”一词的所有实例着色?当然,我可以在保存数据时使用简单的正则表达式,但我有兴趣在输入时为文本着色。我没有找到任何主动装饰文本的插件,如用户输入的那样。

我仍在探索,并且不依赖于任何版本的ckeditor,甚至根本不依赖于ckeditor。

1 个答案:

答案 0 :(得分:1)

我目前正在处理类似的问题,我也没有找到任何插件。我目前正在使用以下手动方法: 我定义了一个CKEDITOR.style并使用它的applyToRange()方法。我通过CKEDITOR.dom.range遍历整个文档来生成CKEDITOR.dom.walker

例如,您可以使用walker遍历文本。 walker返回每个“节点”,允许过滤所有html。文本节点是类型3.在您的情况下,您可能必须捕获adjecent文本节点的情况(我有点混淆如何定义文本节点的开始和结束)。 如果要标记文本的起始节点和结束节点,则可以从中创建范围。使用方法editor.createRange()并手动设置start和end元素。不要忘记设置偏移量。

根据您的样式定义,会生成一个跨越该范围的span元素。更新范围以引用此span元素。如果您不想再次删除样式,例如用户更改内容,则此功能非常有用。

此外,您需要一个策略何时检查文本。看看onChange插件。关键相关事件也可能有所帮助。

这就是我自己现在的距离。如果我遇到问题或找到更简单的解决方案,我会更新我的帖子。可悲的是,我无法共享代码本身。 我还没有测试过。我仍然希望我目前的进步对你有所帮助。