CK编辑器禁用宽度和高度设置

4
我遇到了使用 ckeditor 时的一个令人烦恼的特性。
当你上传一张图片时,无论在文本内容中还是其他地方,ckeditor会自动将宽度和高度的输入框填充为默认值,这会导致一个带有widthheight属性的html标签被添加到style属性中:
<img alt="" src="/uploads/ckeditor/pictures/196/content_David_Leo006.jpg" style="width: 2000px; height: 669px;">

但是,如果您删除输入字段中的值并提交,宽度和高度将不会被设置:
<img alt="" src="/uploads/ckeditor/pictures/196/content_David_Leo006.jpg">

现在像21世纪的任何正常、聪明、健康的Web开发人员一样,我有一个响应式设计来处理这些事情,所以我希望标签总是像后者那样生成。我如何完全隐藏和禁用宽度/高度的输入字段?
CK编辑器的文档非常混乱。
2个回答

5

我之前在表格方面也做了类似的事情。由于我们正在强制使用响应式样式和宽度,我不希望最终用户输入愚蠢的值。

也许这段代码可以帮助你:

CKEDITOR.on( 'dialogDefinition', function( ev )
{
  var dialogName = ev.data.name;
  var dialogDefinition = ev.data.definition;


  if (dialogName == 'table') {

     // Get the advanced tab reference
     var infoTab2 = dialogDefinition.getContents('advanced');

     //Set the default

     // Remove the 'Advanced' tab completely
     dialogDefinition.removeContents('advanced');


     // Get the properties tab reference
     var infoTab = dialogDefinition.getContents('info');

     // Remove unnecessary bits from this tab
     infoTab.remove('txtBorder');
     infoTab.remove('cmbAlign');
     infoTab.remove('txtWidth');
     infoTab.remove('txtHeight');
     infoTab.remove('txtCellSpace');
     infoTab.remove('txtCellPad');
     infoTab.remove('txtCaption');
     infoTab.remove('txtSummary');
  }
});

你在哪里找到这些关键字('txtBorder','cmbAlign'等)的? - myselfmiqdad
1
@miqdadamirali 我其实不记得了。我可能是通过检查源代码找到它们的,或者在文档中找到的,或者在其他帖子或网站上找到的。那是很久以前的事情了,而且我现在已经不再使用CKEditor了,所以我甚至不知道它是否仍然有效。 - Jamie Barker
@miqdadamirali 最近我又不得不做这个了。你可以在上面的代码中使用 console.log(infoTab);,它会给你一个对应所有 HTML 元素的数组。所以如果你看一下这张图片,你会看到图像对话框中“替代文本”和“垂直间距”输入的 ID。所以要删除后者,你只需要执行 infoTab.remove('txtVSpace'); - Jamie Barker
在我的情况下,dialogNametableProperties,而不是 table(版本4+)。 - Wolfgang
为了完整起见:tabletableProperties 对话框名称分别指创建新表和编辑现有表属性。 - Jilocasin

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接