4

我想我已经阅读了大多数关于此的 SO 问题和 CKEditor 文档,但它对我不起作用。

它应该简单明了,在我的 CKEditor config.js 中,我有这个:

CKEDITOR.editorConfig = function(config) {
    config.allowedContent = true;
};

但是 html 仍然被过滤,并且这段代码被剥离:

<p>
<a href="/site/public/press.pdf"><span class="icon-presseFile"></span></a>
<a href="/site/public/pics.zip"><span class="icon-pressePics"></span></a>
</p>

进入这个:

<p>&nbsp;</p>

<span>元素是字体图标。

任何帮助将不胜感激。

编辑 如果我在<span>元素中添加一些文本它会起作用(但我不想这样做)

4

6 回答 6

15

我发现我必须在主配置函数之外添加它。

这有效:

CKEDITOR.editorConfig = function( config ) {
...
};
CKEDITOR.config.allowedContent = true;

但这没有:

CKEDITOR.editorConfig = function( config ) {
    config.allowedContent = true;
    ...
};
于 2013-11-21T18:57:54.200 回答
7

请注意,它可能是导致 config.allowedContent = true 被忽略的恶意插件。我花了我生命中的 12 个小时才学会了这一点

有问题的插件覆盖了自定义配置文件中的 config.allowedContent = true。因此,如果您在 CKEditor 上大喊大叫,请尝试禁用/注释掉所有插件(config.extraPlugins)。如果问题消失,您知道其中一个插件就是原因。

于 2015-06-16T13:49:28.657 回答
1

这个解决方案帮助我解决了我的问题:CKEditor strips <i> Tag

对于我在 config.js 中写的跨度:

// ALLOW <span></span>
config.protectedSource.push( /<span[\s\S]*?\>/g ); //allows beginning <span> tag
config.protectedSource.push( /<\/span[\s\S]*?\>/g ); //allows ending </span> tag
于 2013-11-14T16:59:48.800 回答
0

我在使用 Firefox 时遇到了同样的问题。为了解决这个问题,我必须将 config.js 文件的名称更改为其他任何名称,例如 ckeConfig.js 并声明新名称:

CKEDITOR.replace("textAreaId", {
    customConfig: 'yourPath/ckeditor/ckeConfig.js', 
});

并且不要忘记在 Html 中链接:

<script src="~/yourPath/ckeditor/ckeditor.js"></script>
<script src="~/yourPath/ckeditor/ckeConfig.js"></script>
于 2018-01-16T12:22:14.333 回答
0

试试这个:
CKEDITOR.replace('instanceName', { extraAllowedContent: 'a span' });

您可以在 extraAllowedContent 字符串中放置您不希望它改变的任何标签。

于 2019-02-01T18:11:53.143 回答
0

将此添加到 CKEDITOR.editorConfig 函数中为我完成了它:

config.allowedContent = true; CKEDITOR.dtd.$removeEmpty = false;

于 2021-02-03T16:02:29.117 回答