修改CKEditor 3.6.2并不容易,但是我尽力了。一个仍未解决的问题是:
在config.js中我们有:
CKEDITOR.on( 'dialogDefinition', function( ev ) {
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
if(dialogName == 'image') {
dialogDefinition.onShow = function () {
var dialog = CKEDITOR.dialog.getCurrent();
var elem = dialog.getContentElement('info','htmlPreview');
elem.getElement().hide();
// and more stuff to do...
};
}
});
加载编辑器后,用户上传了图像后,引发以下javascript错误:
Error: C.preview is undefined
Source File: wysiwyg-editor/plugins/image/dialogs/image.js?t=B8DJ5M3
Line: 8
dialogDefinition.onShow似乎导致了这个错误,因为从代码中删除了所有元素,并且只有调用onShow才会弹出错误。使用onLoad确实有效!在其他对话框上使用onShow很好,只有图像对话框不能正常工作。
顺便说一句,我在CKEditor论坛上问过,但没人接。
发布于 2012-06-28 10:11:51
我在寻找解决方案的时候偶然发现了这个。我想我会发布我最终做了什么来解决它,尽管不是100%的理想。
CKEDITOR.on( 'dialogDefinition', function( ev ) {
var tab, field, name = ev.data.name,
definition = ev.data.definition;
if( name == 'image' )
{
tab = definition.getContents( 'info' );
field = tab.get( 'htmlPreview' );
field.style = 'display: none';
}
});
这使得预览窗口可用于处理,只需将其隐藏在对话框窗口中即可。
发布于 2019-02-20 08:21:30
这样使用CKEDITOR.tools.setTimeout():
CKEDITOR.on('dialogDefinition', function(ev) {
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
var dialog = dialogDefinition.dialog;
if (dialogName == 'image2') {
dialogDefinition.onShow = CKEDITOR.tools.override(dialogDefinition.onShow, function(original) {
return function() {
original.call(this);
CKEDITOR.tools.setTimeout( function() {
if (dialog.getContentElement('info', 'src').getValue() == '') {
dialog.selectPage('Upload');
}
}, 0);
}
});
}
});
https://stackoverflow.com/questions/9605154
复制