CKEditor剥离内联属性

时间:2013-04-02 00:07:56

标签: html ckeditor strip-tags

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

5 个答案:

答案 0 :(得分:33)

感觉您正在使用Advanced Content Filter (ACF)附带的CKEditor 4.1+。如果是这样,您需要指定config.allowedContentconfigure it才能让您的工作正常进行。您可能也对config.extraAllowedContent感兴趣。

有关详细信息,请参阅this answer

答案 1 :(得分:10)

对于任何寻找关于如何在CKEditor中启用其他标记而不完全禁用ACF的简单示例的人来说,这是一个简短的片段:

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

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

答案 2 :(得分: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>';
}

答案 3 :(得分:3)

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

config.allowedContent = true;
config.extraAllowedContent = '*(*);*{*}';
config.extraAllowedContent = 'span;ul;li;table;td;style;*[id];*(*);*{*}';

答案 4 :(得分:1)

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

editor.insertHtml(html);

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

editor.insertElement(CKEDITOR.dom.element.createFromHtml(html));