我一直在使用CKEditor并且效果很好。我几乎已经摆脱了我所遇到的任何问题,但这个我似乎无法弄明白。当我向style = "color: #ff0;"
标记上的<p></p>
元素添加内联属性时,当我从wysiwyg切换到源视图时,它们会被删除。没有保存或提交,并且ckeditor已添加到我的网站,这是我自己的脚本。关于什么会导致这个的任何想法。我能找到的所有搜索结果都对应于Drupal中发生的这种情况,但Drupal似乎是问题而不是所有实例中的编辑器。再次感谢!
答案 0 :(得分:33)
感觉您正在使用Advanced Content Filter (ACF)附带的CKEditor 4.1+。如果是这样,您需要指定config.allowedContent
和configure 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));