CKEditor: Использование dialogDefinition.onShow () генерирует C.preview, не определенный - PullRequest
2 голосов
/ 07 марта 2012

Модифицировать 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 , но никто не ответил.

Ответы [ 2 ]

3 голосов
/ 28 июня 2012

Наткнулся на это, когда я искал разрешение. Я решил опубликовать то, что в конечном итоге сделал, чтобы решить эту проблему, хотя и не на 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';
  }
});

Это делает окно предварительного просмотра доступным для обработки, просто скрывает его из диалогового окна.

0 голосов
/ 20 февраля 2019

Используйте следующий синтаксис:

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);
            }
        });
    }
});
...