CKEditor从表中删除class属性

时间:2013-07-24 13:45:37

标签: html css ckeditor

在我的<textarea>中,我有这样的文字:

<table class='table table-striped'>
<tr>
<td>1</td>
<td>2</td>
</tr>
</table>

使用CKEDITOR.replace()后,我的文本区域变为CKEditor,并且其中包含一个表格。问题是CKEditor将其类添加到名为cke_show_border的表中。只有该类中的属性应用于表,我的类都不会被应用。

我应该怎么做才能应用我的tabletable-striped课程?

感谢您的帮助。

8 个答案:

答案 0 :(得分:9)

我有一个类似的问题,在Drupal 7中使用CKEditor 7.x.1.13打开和保存是在我的HTML元素中删除属性。在“自定义JavaScript配置”下添加以下内容修复了它。

config.allowedContent = true;

答案 1 :(得分:8)

您可以通过设置

来允许任何内容:标签,类,样式和属性
config.allowedContent = true;

但是,最好只允许插件提供的功能。 要允许将任何类附加到表,请键入

config.extraAllowedContent = 'table(*)';

要阅读有关规则语法的更多信息,请转到此处:http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules-section-string-format

答案 2 :(得分:6)

正如我在此处看到的,您很可能正在使用CKEditor 4.1或更新版本,而您的问题是Advanced Content Filter。我猜你的表格对话框中没有“高级”标签,编辑器包中也没有dialogadvtab插件:

CKEDITOR.instances.yourInstance.plugins.dialogadvtab
> undefined

右?然后你必须配置config.extraAllowedContent

config.extraAllowedContent = `table[class]`;

为什么会这样,你可能会问?这是因为编辑器中没有feature(命令,按钮,对话框,字段等)将类附加到<table>标记。所以没有任何特征说:

  “嘿,编辑,我要在桌子上添加课程,你应该对它很酷。”

事实上,这是通过定义allowedContent和功能定义来完成的。因此,如果没有加载dialogadvtab插件会告诉编辑器表可以使用类,编辑器会丢弃输出中的class属性,因为任何功能都不支持它们。

此行为是为了保持您的标记清洁并控制您的WYSIWYG编辑器生成的内容。不过,它需要关注和基本的理解。

请参阅我之前对类似问题的回答:CKEditor automatically strips classes from div

答案 3 :(得分:2)

我找到了解决方案。

这会关闭过滤,它会起作用,但不是一个好主意......

config.allowedContent = true;

使用内容字符串适用于id等,但不适用于类和样式属性,因为您有()和{}用于类和样式过滤。

所以我的赌注是允许编辑器中的任何课程:

config.extraAllowedContent = '*(*)';

这允许任何类和任何内联样式。

config.extraAllowedContent = '*(*);*{*}';

仅允许class =&#34; asdf1&#34;和class =&#34; asdf2&#34;对于任何标签:

config.extraAllowedContent = '*(asdf1,asdf2)';

(所以你必须指定类名)

仅允许class =&#34; asdf&#34;仅适用于p标签:

config.extraAllowedContent = 'p(asdf)';

允许任何标记的id属性:

config.extraAllowedContent = '*[id]';

等等

允许样式标记(&lt;样式类型=&#34; text / css&#34;&gt; ...&lt; / style&gt;):

config.extraAllowedContent = 'style';

要复杂一点:

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

希望它是一个更好的解决方案......

答案 4 :(得分:1)

Thsi是使用CKeditor 4.0及更高版本和我们自己的css风格的完美示例。

union

答案 5 :(得分:0)

将border = 1添加到表中,这样CKEditor就不会在表上设置自己的类 (可能有其他方法可以做到这一点,但我总是发现这更容易,因为它不需要对CKEditor进行任何更改)

答案 6 :(得分:0)

config.allowedContent = true;

我通过在localhost上添加此代码修复了同样的问题。但是在我的服务器上它没有用。感谢this,我在ckeditor / build-config.js中禁用了'tabletools' : 1,并且它有所帮助。

答案 7 :(得分:0)

而且,到2020年,问题仍在许多用户中发生, 解决方法

1.goto ckeditor文件夹

2。找到文件 config.js 并将其打开

3。找到

`config.extraAllowedContent = 'div(*)'`;

像这样添加table(*)

`config.extraAllowedContent = 'table(*);div(*)';`

注意,如果找不到第3点,则将以下代码添加到config.js文件中

`config.div_wrapTable = true;` 


`config.extraAllowedContent = 'table(*);`