0

我正在尝试使用以下命令向 CKEditor 插入文本:

CKEDITOR.instances.Body.insertText('$${FIRSTNAME}');

当光标位于纯文本时,上述命令可以正常工作。当我尝试在具有属性的文本之间插入文本时,它会插入单个 $ 而不是 $${FIRSTNAME} 的 $$。我已将示例上传到 jsbin 以重现该问题

http://jsbin.com/ahikeh/1

请提出解决此问题的替代方法。

4

2 回答 2

2

这是一个丑陋的错误:DI调试了代码并找到了原因:

https://github.com/ckeditor/ckeditor-dev/blob/master/core/editable.js#L1616

String#replace方法视为$$一个$https://developer.mozilla.org/en/docs/JavaScript/Reference/Global_Objects/String/replace),因此数据应该受到保护。

恐怕现在没有简单的解决方法,因为您无法事先转义数据。根据上下文,replace将使用或不使用该方法。

所以最好的选择是使用其他模板模式 - 例如%%{foo}- 它会正常工作。从编辑器获取数据时,您可以替换%%$$.

门票:http ://dev.ckeditor.com/ticket/10367

于 2013-04-23T07:42:23.183 回答
1

尝试使用insertHtml()代替:

CKEDITOR.instances.Body.insertHtml('<b>$${FIRSTNAME}</b>');

更新的演示

于 2013-04-23T05:53:46.843 回答