1

我有一个对话框,其内容是通过解析当前页面的 DOM 来填充的。我尝试了两件事,但都不完全正确:

  1. CKEDITOR.on('dialogDefinition', ...:此方法在第一次打开对话框时有效,但后续打开使用缓存的对话框定义,因此对 DOM 的任何更改都不会显示在对话框内容中。

  2. dialog.on('show', ...:每次显示对话框时都会触发此方法,但似乎在计算完对话框的内容后会触发此方法。

所以我的问题是:是否有一个钩子或其他我可以使用的方法来在每次对话框打开时填写内容?谢谢!

编辑

这是我现在拥有的一个基本示例,它不起作用-对话框中没有显示“无嵌入”消息。

CKEDITOR.plugins.add('embeds', {
  init: function(editor) {
    editor.on('dialogShow', function(event) {
      var dialog           = event.data,
          dialogDefinition = dialog.definition;

      if(dialog.getName() != "EmbedsDialog") return;
      var main   = dialogDefinition.getContents('main');

      main.add({
        type  : 'html',
        html : "<strong>There are no embeds yet! Add them below.</strong>"
      });
    });


    CKEDITOR.dialog.add('EmbedsDialog', function (instance) {
      return {
        title : 'Embeds',
        minWidth : 550,
        minHeight : 200,

        contents: [{
          id: "main",
          elements: []
        }],
      }; // return
    });

    editor.addCommand('Embeds',
      new CKEDITOR.dialogCommand('EmbedsDialog', {
        allowedContent: 'a[*](*)'
      })
    );

    editor.ui.addButton('Embeds', {
      label     : 'Embeds',
      command   : 'Embeds',
      toolbar   : 'embeds'
    });
  } // init
}); // add
4

0 回答 0