CKEditor this.editables не доступен во время downcast?

Вот выдержка из моего плагина ( полная версия):

CKEDITOR.plugins.add('dndck4', {
  lang: 'en',
  requires: 'widget',

  init: function (editor) {
    editor.widgets.add('dndck4', {
      dialog: 'atomProperties',
      pathName: 'atom',
      editables: {
        caption: {
          selector: '.dnd-caption-wrapper',
          pathName: 'caption',
          allowedContent: 'a[href]; strong; em'
        }
      },
...
      downcast: function(el) {
        var caption = '';
        if (this.data.usesCaption) {
          caption = this.editables.caption.getHtml();
        }
        var html = Drupal.dndck4.downcastedHtml(this.data, caption);
        return CKEDITOR.htmlParser.fragment.fromHtml(html);
      },

Это работало хорошо, пока другой JS не сделал что-то очевидно безвредное:

  editor.on('change', function() {
    // Let CKEditor handle updating the linked text element.
    editor.updateElement();
  });

Это нарушает мой плагин на основе виджетов (this.editables - пустой объект). Конечно, я могу просто проверить this.editables, чтобы избежать ошибки в следующей строке caption = this.editables.caption.getHtml(); но я хотел бы знать, что случилось и почему.

0 ответов

Другие вопросы по тегам