在我的<textarea>
中,我有这样的文字:
<table class='table table-striped'>
<tr>
<td>1</td>
<td>2</td>
</tr>
</table>
使用CKEDITOR.replace()
后,我的文本区域变为CKEditor,并且其中包含一个表格。问题是CKEditor将其类添加到名为cke_show_border
的表中。只有该类中的属性应用于表,我的类都不会被应用。
我应该怎么做才能应用我的table
和table-striped
课程?
感谢您的帮助。
答案 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(*);`