我使用的CKEditor上我的网站后端的编辑器。 这是推动我拐弯,虽然,因为它似乎想改变代码,它是如何认为合适时,我按下信号源按钮。 例如,如果我打源,并创建一个<div>
...
<div class="myclass">some content</div>
然后,它没有明显的原因条从类<div>
所以当我再次打源已更改为...
<div>some content</div>
我想这恼人行为可以在关闭config.js
,但我一直在挖掘和不能找到文档中任何将其关闭。
Answer 1:
禁用内容过滤
最简单的办法是要在config.js和设置:
config.allowedContent = true;
( 记得要清除浏览器缓存 )。 然后CKEditor的停止在所有过滤输入的内容。 但是,这将完全禁用内容过滤这是最重要的CKEditor的特点之一。
配置内容过滤
您还可以配置CKEditor的内容过滤器更精确地只允许你需要这些元素,类,样式和属性。 这个解决方案要好得多,因为CKEditor的仍然会删除大量的复制和粘贴内容时浏览器产生糟糕的HTML,但它不会破坏你想要的内容。
例如,你可以扩展默认的CKEditor的配置,以接受所有的div类:
config.extraAllowedContent = 'div(*)';
或者一些引导的东西:
config.extraAllowedContent = 'div(col-md-*,container-fluid,row)';
或者你也可以允许描述列出可选dir
的属性, dt
和dd
元素:
config.extraAllowedContent = 'dl; dt dd[dir]';
这些只是非常基本的例子。 你可以写所有种类的规则 - 要求的属性,类别或样式,仅匹配特殊元素,匹配的所有元素。 您也可以禁止的东西,完全重新定义CKEditor的规则。 了解更多:
- 在CKEditor的内容过滤 -为什么你需要的内容过滤器。
- 高级内容过滤 -在过滤机制的深描。
- 允许的内容规则 -如何写允许的内容规则。
Answer 2:
我找到了解决办法。
这将关闭过滤功能,它的工作,但不是个好主意......
config.allowedContent = true;
要与内容串玩ID等工作正常,但不能用于类和样式属性,因为你有()和{}类和风格过滤。
所以我的办法是允许任何类的编辑器:
config.extraAllowedContent = '*(*)';
这允许任何类和任何内嵌样式。
config.extraAllowedContent = '*(*);*{*}';
如果只允许类=“asdf1”和class =“asdf2”任何标签:
config.extraAllowedContent = '*(asdf1,asdf2)';
(所以你必须指定的类名)
如果只允许用于p标签唯一一类=“ASDF”:
config.extraAllowedContent = 'p(asdf)';
为了使任何标签的id属性:
config.extraAllowedContent = '*[id]';
等等等等。
以允许风格标记(<风格类型= “文本/ CSS”> ... </样式>):
config.extraAllowedContent = 'style';
更复杂一点:
config.extraAllowedContent = 'span;ul;li;table;td;style;*[id];*(*);*{*}';
希望这是一个更好的解决办法?
Answer 3:
由于CKEditor的V4.1,你可以在CKEditor的的config.js做到这一点:
CKEDITOR.editorConfig = function( config ) {
config.extraAllowedContent = '*[id](*)'; // remove '[id]', if you don't want IDs for HTML tags
}
您可以参考官方文档允许的内容规则的详细语法
Answer 4:
编辑 :这个答案是为那些谁在Drupal使用CKEditor的模块。
我发现这并不需要修改CKEditor的js文件的解决方案。
这个答案是抄自这里 。 所有的学分应该去原作者。
进入“管理>>配置>> CKEditor的”; 配置文件下,选择您的个人资料(例如全)。
编辑个人资料,并在“高级选项>>自定义JavaScript配置”添加config.allowedContent = true;
。
不要忘了冲下的高速缓存“性能选项卡。”
Answer 5:
如果你使用的CKEditor 4.x的你可以试试
config.allowedContent = true;
如果你使用的CKEditor 3.x的,你可以是具有这个问题 。
尝试把下面的行config.js
config.ignoreEmptyParagraph = false;
Answer 6:
这在ckeditor.It称为ACF(自动内容过滤器),删除所有unnessary标签是我们在您的config.js文件中使用什么文字content.Using这个命令应该是关闭此ACK。
config.allowedContent = true;
Answer 7:
请参考官方高级内容过滤器引导和插件的集成教程 。
你会发现比这更多关于这个强大的功能。 另请参见config.extraAllowedContent似乎适合您的需求。
Answer 8:
如果你使用Drupal和所谓的“所见即所得”与CKEditor的库中的模块,然后将下面的解决方法可能是一个解决方案。 对我来说就像一个魅力。 我用的CKEditor 4.4.5和2.2所见即所得在Drupal 7.33。 我在这里找到这种解决方法: https://www.drupal.org/node/1956778 。
那就是:我创建一个自定义模块,并把下面的代码在“.module”文件:
<?php
/**
* Implements hook_wysiwyg_editor_settings_alter().
*/
function MYMODULE_wysiwyg_editor_settings_alter(&$settings, $context) {
if ($context['profile']->editor == 'ckeditor') {
$settings['allowedContent'] = TRUE;
}
}
?>
我希望这有助于其他Drupal的用户。
Answer 9:
以下是CKEDITOR 4.x的完整的例子:
HTML
<textarea name="post_content" id="post_content" class="form-control"></textarea>
脚本
CKEDITOR.replace('post_content', {
allowedContent:true,
});
上面的代码将允许在编辑器中的所有标签。
欲了解更多详细信息: CK编辑器允许的内容规则
Answer 10:
我发现,切换到使用全HTML而不是过滤HTML(文本格式下拉框编辑器下方)是什么固定的这个问题对我来说。 否则,风格就会消失。
Answer 11:
我想补充这config.allowedContent = TRUE; 需要添加到ckeditor.config.js文件不是config.js,config.js什么也没做对我,而且将它添加到ckeditor.config.js的顶部区域保持我的div类
Answer 12:
如果使用Drupal的另一种选择是简单地添加你要使用的CSS样式。 这样,它不会剥离出样式或类别名称。
所以在Drupal 7的CSS标签下我的情况下,只需添加类似
的Facebook = span.icon-facebook2
还检查字体样式按钮启用
Answer 13:
我面临着同样的问题上与镀铬4.7.1的CKEditor。 在CKEditor的instanceReady.This财产只是禁用pasteFilter禁用高级内容过滤器(ACF)的所有过滤器选项。
CKEDITOR.on('instanceReady', function (ev) {
ev.editor.pasteFilter.disabled = true;
});
文章来源: CKEditor automatically strips classes from div