首页 > 解决方案 > CKEditor 4.6 有时会在不进行配置的情况下剥离属性

问题描述

我的 CKEditor 4.6 有一些奇怪的行为,它有时会从跨度中删除一个属性。

我有一个自定义插件,它添加了@mentions,并插入了一个用作占位符的跨度,以便稍后解析服务器端,如下所示:

var placeholder = '<span class="mention" contenteditable="false" mention-id="' + clickedSuggestion.Id + '">@' + clickedSuggestion.Title + '</span>';
var mentionElement = CKEDITOR.dom.element.createFromHtml(placeholder);
editor.insertElement(mentionElement);

在我的配置中,我允许了这些元素:

editor.config.extraPlugins += ',mention'; // my custom plugin
editor.config.extraAllowedContent = { span: { classes: 'mention', attributes: 'contenteditable' } };

现在有时(可能 20 次中有 1 次)发生的情况是,mention-id 属性被剥夺了。

// what sometimes happens
<span class="mention" contenteditable="false">@foo</span>

// usual output
<span class="mention" contenteditable="false" mention-id="bar">@foo</span>

我意识到在 extraAllowedContent 配置中没有提及 ID,这将是问题的逻辑原因。但另一方面,它在大多数情况下都非常有效!

我不明白为什么该属性没有一直被剥离?谢谢!

编辑:所以在使用 editor.insertElement() 时似乎未应用 extraAllowedContent,因此排除了错误的配置。但是在 createFromHtml 或 insertElement 调用期间仍然有一个属性消失。

标签: javascriptckeditorckeditor4.x

解决方案


推荐阅读