1

現在のページの DOM を解析することによってコンテンツが入力されるダイアログがあります。私は2つのことを試しましたが、どちらも正確ではありません:

  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