7 回答
当使用 protectedSource 解决方案时,i
标签不再被剥离,但img
标签停止显示在 CKEditor 的 WYSIWIG 模式(我使用的是 4.3.1)。对我来说效果更好的解决方案是禁用删除空i
标签使用CKEDITOR.dtd.$removeEmpty
例如,我将以下内容添加到 config.js
// allow i tags to be empty (for font awesome)
CKEDITOR.dtd.$removeEmpty['i'] = false;
注意:这应该放在CKEDITOR.editorConfig = function( config )
函数之外。
<i>
我找到了使用标签遇到的这个特定问题的解决方案
对其进行修复或调整(您可以命名)是将以下内容设置到 ckeditors config.js 中:
// ALLOW <i></i>
config.protectedSource.push(/<i[^>]*><\/i>/g);
感谢Spasticdonkey将我指向链接。
这对我有用
在 drupal ckeditor 配置文件设置 admin/config/content/ckeditor/edit/Full 中以相同的顺序添加以下 3 行代码
高级选项 >> 自定义 JavaScript 配置
config.allowedContent = true;
config.extraAllowedContent = 'p(*)[*]{*};div(*)[*]{*};li(*)[*]{*};ul(*)[*]{*}';
CKEDITOR.dtd.$removeEmpty.i = 0;
第一行几乎关闭了高级过滤
第二行是允许所有类 ( )、任何样式 { } 和任何属性 [*] 用于 p、div、li 和 ul。
最后一行是空标签...此行适用于图像...我发现如果您使用 config.protectedSource.push(/]*></i>/g); 它在编辑时去除标签。
对于 4.3 版本的 ckeditor
在 config.js 中(在配置部分之后)粘贴
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' );
},
});
}
});
有两个可能的问题:
阅读高级内容过滤器。CKEditor 正在删除不允许的元素,但您可以扩展过滤器的规则。
但是,如果问题是 CKEditor 删除了空
<i>
元素,那么您需要找到其他使用它的方法。CKEditor 不是所见即所得的网站构建器。它是一个文档编辑器,所以加载的内容必须是有意义的。空的内联元素没有任何意义,因此将其删除,否则编辑器将不知道如何处理它。(不久的)将来可能的解决方案之一是使用小部件系统来处理那些空元素。但现在我建议您检查CKEDITOR.htmlDataProcessor和简短指南如何使用它。
我找到了一个永久的解决方案。实际上发生了什么 ckeditor 只删除了空白标签。无论标签是什么,可能是 b<i>
标签或<span>
标签
如果您使用任何图标,如 font-awesome、maeterlize 图标等...您可以通过在config.js
文件中使用以下代码来停止它
CKEDITOR.dtd.$removeEmpty.span = false;
CKEDITOR.dtd.$removeEmpty.i = false;
如果您使用更多空白标签,那么您需要在之后添加标签名称$removeEmpty
CKEditor 4 移除了 emtpy 标签,所以在这里你可以在不更改任何配置设置的情况下进行操作。
代替
<i class="fa-icon-fullscreen fa-icon-xxlarge main-color"></i>
和
<i class="fa-icon-fullscreen fa-icon-xxlarge main-color"> </i>
现在<i></i>
标签有内容,即
CKEditor不会删除该标签。