25

我使用 CKEditor 已经有一段时间了,效果很好。我几乎摆脱了我遇到的任何问题,但我似乎无法弄清楚这一点。当我向元素添加内联属性时,例如style = "color: #ff0;"<p></p>标签上,当我从所见即所得切换到源视图时,它们会被剥离。没有保存或提交,并且 ckeditor 已添加到我的站点,这是我自己的脚本。关于什么会导致这种情况的任何想法。我能找到的所有搜索结果都与 Drupal 中发生的这种情况相对应,但 Drupal 似乎不是所有情况下的编辑器的问题。再次感谢!

4

5 回答 5

35

感觉就像您使用的是高级内容过滤器 (ACF)附带的 CKEditor 4.1+ 。如果是这样,您需要指定config.allowedContent配置它以使您的工作正常。您可能还对config.extraAllowedContent.

有关更多详细信息,请参阅此答案

于 2013-04-02T07:19:36.047 回答
11

对于正在寻找有关如何在不完全禁用 ACF 的情况下在 CKEditor 中启用附加标记的简单示例的任何人,这里有一个简短的片段:

CKEDITOR.replace( 'editor1', {
    extraAllowedContent: 'style;*[id,rel](*){*}'
} );

这里的extraAllowedContent启用<style>元素,允许所有(*是通配符)已经允许的元素的两个附加属性(在方括号中),允许(*)为它们使用任何类名并允许使用任何内联样式{*}

于 2014-02-19T14:43:34.563 回答
5

您好,您可以轻松停止 ACF。默认情况下,您的配置是---

function ckeditor($name,$value='',$height=300){
    return '<textarea name="'.addslashes($name).'">'.htmlspecialchars($value).'</textarea>
<script>$(function(){CKEDITOR.replace("'.addslashes($name).'",{});});</script>';
} 

只需将其添加到大括号中:

allowedContent: true

现在您的配置将是:

function ckeditor($name,$value='',$height=300){
    return '<textarea name="'.addslashes($name).'">'.htmlspecialchars($value).'</textarea>
<script>$(function(){CKEDITOR.replace("'.addslashes($name).'",{allowedContent: true});});</script>';
}
于 2014-03-13T07:10:23.160 回答
5

我遇到了同样的问题,下面的答案解决了我的问题:

config.allowedContent = true;
config.extraAllowedContent = '*(*);*{*}';
config.extraAllowedContent = 'span;ul;li;table;td;style;*[id];*(*);*{*}';
于 2017-03-30T11:43:33.167 回答
1

我遇到了同样的问题,在使用此方法时,ck 在粘贴块元素时,在块元素内(在 ap 中粘贴了一些属性的 div)不仅剥离了一些属性,而且剥离了整个元素:

editor.insertHtml(html);

解决问题的方法是使用此解决方法:

editor.insertElement(CKEDITOR.dom.element.createFromHtml(html));
于 2015-05-06T10:49:27.213 回答