CKEditor删除内联img样式

ccd*_*ies 4 ckeditor

我正在使用响应式图像技术,使用CSS设置最大宽度为100%.

这不适用于通过CKEditor添加的任何图像,因为添加了内联样式.

在CSS中,我添加了一个样式来覆盖宽度,但是高度:auto不会,因此图像会被拉伸.

我需要找到一种方法来阻止CKEditor首先添加内联样式.

我正在使用CKEditor 4.x.

谢谢

Jos*_*ard 14

接受答案的一个更好的替代方法是使用disallowedContent(参见文档),而不是allowedContent.

使用allowedContent要求您为每个可能的标记或属性创建一个相当大的白名单; 哪里disallowedContent没有; 允许您将要忽略的样式作为目标.

这可以这样做:

CKEDITOR.replace( 'editor1', {
    disallowedContent: 'img{width,height};'
});
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,因为它完全消除了在弹出窗口中设置图像尺寸的能力......这正是您想要的响应式。凉爽的。 (2认同)

ole*_*leq 8

从版本4.1开始,CKEditor提供了所谓的内容转换,并且已经定义了一些内容转换.如果你限制你config.allowedContent不想拥有widthheight使用<img>样式,那么编辑器会自动将样式转换为属性.例如:

CKEDITOR.replace( 'editor1', {
    allowedContent: 
        'img[!src,alt,width,height]{float};' + // Note no {width,height}
        'h1 h2 div'
} );
Run Code Online (Sandbox Code Playgroud)

然后:

<p><img alt="Saturn V carrying Apollo 11" class="left" src="assets/sample.jpg" style="height:250px; width:200px" /></p>
Run Code Online (Sandbox Code Playgroud)

变成输出:

<p><img alt="Saturn V carrying Apollo 11" height="250" src="assets/sample.jpg" width="200" /></p>
Run Code Online (Sandbox Code Playgroud)

而且,正如我猜,它完全解决了你的问题.

  • 如果`config.enterMode`是'ENTER_P`,编辑器会将FYI`p`添加为必备标签. (2认同)