CKEditor的自动去除从DIV类CKEditor的自动去除从DIV类(CKEditor auto

2019-05-06 13:07发布

我使用的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的属性, dtdd元素:

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