我在 CKEditor 的图像插件中隐藏预览元素时遇到问题。我需要一个非常简单的图像对话框,只有图像源的输入字段和带有图像上传按钮的表单。所以我使用这些自定义配置设置删除了不必要的元素:
CKEDITOR.on( 'dialogDefinition', function( ev )
{
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
if ( dialogName == 'image' ){
dialogDefinition.removeContents( 'advanced' );
dialogDefinition.removeContents( 'Link' );
var infoTab = dialogDefinition.getContents( 'info' );
infoTab.remove( 'ratioLock' );
infoTab.remove( 'txtHeight' );
infoTab.remove( 'txtWidth' );
infoTab.remove( 'txtBorder');
infoTab.remove( 'txtHSpace');
infoTab.remove( 'txtVSpace');
infoTab.remove( 'cmbAlign' );
infoTab.remove( 'txtAlt' );
}
});
当我尝试隐藏 htmlPreview 元素时,问题就开始了。如果我只是简单地添加infoTab.remove( 'htmlPreview ' );
,就会发生错误:Uncaught TypeError: Cannot call method 'setStyle' of null
因为已删除元素的代码依赖关系。我用谷歌搜索了很多,似乎有两种方法可以解决这个问题 - 手动编辑那里写的插件的源代码(
我想唯一的解决方案是从 image/dialogs/image.js 中删除所有引用这些 html 对象的 javascript 函数,这些 html 对象已被删除。
我尝试遵循此建议,但无法在没有后续错误的情况下编辑源文件)或编写我自己的。当然,我可以简单地添加一些 css 规则并隐藏元素,但我想这不是一个好主意。这个问题已经够老了,我确信有一个很好的解决方案,但我没能找到它。希望你能帮助我。先感谢您。
PS 我有最新版本的 CKEditor - 3.6.4。