CKEditor 去除内联属性

Posted

技术标签:

【中文标题】CKEditor 去除内联属性【英文标题】:CKEditor strips inline attributes 【发布时间】:2013-03-23 03:33:03 【问题描述】:

我使用 CKEditor 已经有一段时间了,效果很好。我几乎摆脱了我遇到的任何问题,但这个我似乎无法弄清楚。当我在<p></p> 标记上向元素添加内联属性时,例如style = "color: #ff0;",当我从所见即所得切换到源视图时,它们会被删除。没有保存或提交,并且 ckeditor 已添加到我的站点,这是我自己的脚本。关于什么会导致这种情况的任何想法。我能找到的所有搜索结果都与 Drupal 中发生的这种情况相对应,但 Drupal 似乎不是所有情况下的编辑器的问题。再次感谢!

【问题讨论】:

此外,编辑器已配置为全页模式,允许我添加<style></style>,但内联属性仍被剥离。 【参考方案1】:

我遇到了同样的问题,下面的答案解决了我的问题:

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

【讨论】:

我也试过了,我在移动应用程序中添加了 ckeditor,它在 android 设备上工作,但在 ios 设备中从 html 中剥离样式和标签。【参考方案2】:

我遇到了同样的问题,在使用此方法时,ck 在粘贴块元素时,在块元素内(在 p 中粘贴了一些属性的 div)不仅剥离了一些属性,而且剥离了整个元素:

editor.insertHtml(html);

解决问题的方法是使用此解决方法:

editor.insertElement(CKEDITOR.dom.element.createFromHtml(html));

【讨论】:

【参考方案3】:

感觉就像您正在使用 Advanced Content Filter (ACF) 附带的 CKEditor 4.1+。如果是这样,您需要指定 config.allowedContent 和 configure it 才能使您的工作正常进行。你可能也对config.extraAllowedContent感兴趣。

更多详情请见this answer。

【讨论】:

链接似乎已损坏。有兴趣的人可以在docs.ckeditor.com 获得该文档。 @Nenotlep 链接似乎工作得很好。请重试并确认。 还是不行。对我来说,所有链接看起来都像“ckeditor-docs.t/#!...”,这显然失败了。 IE 和 Chrome。 链接在编辑模式下也看起来像[1]: http://ckeditor-docs.t/#!/guide/dev_advanced_content_filter。您是否与ckeditor-docs.t 在同一个网络中,或者您可能有对该地址的硬编码 DNS 解析? @Nenotlep 哈哈! ;) 谢谢。我没有弄明白,因为我在本地配置了文档。固定域。再次感谢。【参考方案4】:

您好,您可以轻松停止 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>';

【讨论】:

【参考方案5】:

对于正在寻找有关如何在不完全禁用 ACF 的情况下在 CKEditor 中启用附加标记的简单示例的任何人,这里有一个简短的 sn-p:

CKEDITOR.replace( 'editor1', 
    extraAllowedContent: 'style;*[id,rel](*)*'
 );

extraAllowedContent 此处启用&lt;style&gt; 元素,允许所有(* 是通配符)已允许的元素的两个附加属性(在方括号中),允许为它们使用任何类名(*) 并允许使用任何内联样式*

【讨论】:

你可以更进一步,允许一切(我认为):style;*(*)[*]*;

以上是关于CKEditor 去除内联属性的主要内容,如果未能解决你的问题,请参考以下文章

文本选择上的CKEDITOR内联编辑器工具栏[关闭]

山魈去除链接上的“风格”属性

CKEditor5内联构建在h1标记内放置一个p标记 - 如何禁用它?

代码干货|内联 Style 简写属性的发现

为啥 SVG 视图框属性仅适用于内联 SVG?

如何将 nonce 属性随机 id 与内联 JavaScript 关联