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' ); }, }); }
});