CKEditor去掉<i>标签

我试图find一个解决scheme,以避免CKEditor,但也旧的FCKeditor去除以前插入的内容到数据库的任何<i>标签。

案件:

我将html内容插入数据库,一些内容包含<i>元素。 我用CKEditor做这个。 一切正常,内容出现在网页上。 但是,当我想编辑以前插入的内容, <i>元素丢失。

在我的具体情况下,我使用:

 <i class="fa-icon-fullscreen fa-icon-xxlarge main-color"></i> 

当然,如果我禁用编辑器,内容显示在textarea就好了。

当使用protectedSource解决scheme时, i标签不再被剥离,而是在CKEditor的所见即所得模式(我正在使用4.3.1)中停止显示img标签。 对我来说更好的解决scheme是使用CKEDITOR.dtd.$removeEmpty禁用删除空的i标签

例如,我将以下内容添加到config.js中

 // allow i tags to be empty (for font awesome) CKEDITOR.dtd.$removeEmpty['i'] = false; 

注意:这应该放在CKEDITOR.editorConfig = function( config )函数之外。

我发现这个解决scheme是针对我用<i>标签碰到的特定问题

我从drupal论坛得到的原始答案

修正或调整(你的名字)是将以下内容设置为ckeditors config.js:

 // ALLOW <i></i> config.protectedSource.push(/<i[^>]*><\/i>/g); 

感谢Spasticdonkey指向我的链接。

这是对我有用的东西

在drupal ckeditorconfiguration文件设置admin / config / content / ckeditor / edit / Full中添加以下三行代码

高级选项>>自定义JavaScriptconfiguration

  config.allowedContent = true; config.extraAllowedContent = 'p(*)[*]{*};div(*)[*]{*};li(*)[*]{*};ul(*)[*]{*}'; CKEDITOR.dtd.$removeEmpty.i = 0; 

有两个可能的问题:

  • 阅读有关高级内容filter 。 CKEditor正在删除不允许的元素,但是您可以扩展filter的规则。

  • 但是,如果问题是CKEditor删除了空的<i>元素,那么您需要find使用它的其他方式。 CKEditor不是一个所见即所得的网站build设者。 它是一个文档编辑器,所以加载的内容必须有意义。 空内联元素没有任何意义,因此它被删除,否则编辑器不知道如何处理它。

    未来(将来)的可能解决scheme之一将是使用Widgets系统来处理那些空的元素。 但现在我build议你检查CKEDITOR.htmlDataProcessor和简短的指南如何使用它。

为4.3版本ckeditor

在config.js(configuration部分之后)粘贴

 CKEDITOR.dtd.$removeEmpty['b'] = false; 

并用代码编写小部件

 CKEDITOR.plugins.add( 'bwcaret', { requires: ['widget'/*, 'richcombo'*/], icons: 'bwcaret', init: function( editor ) { editor.widgets.add( 'bwcaret', { button: 'Create a caret', template: '<b class="caret"></b>', allowedContent: 'b(!caret)', requiredContent: 'b(!caret)', upcast: function( element ) { return element.name == 'b' && element.hasClass( 'caret' ); }, }); } 

});