2016-12-13 3 views
1

Я пытаюсь создать свой собственный плагин и диалог с элементом html. Когда элемент html щелкнут, я хотел бы добавить текст в редактор. Я не могу найти способ обойти функцию onOk.Доступ к функции ckeditor из элемента html диалогового окна без использования «onOk»

Если я использую editor.insertHtml(' some code ') внутри функции onOk, текст добавляется, но если я хочу использовать его снаружи, я получаю ошибку Uncaught TypeError: Cannot read property 'editor' of undefined(…).

Каков правильный способ добраться до редактора?

CKEDITOR.dialog.add('smiley2', function(editor) { 
    return { 
     title: 'Abbreviation Properties', 
     minWidth: 400, 
     minHeight: 200, 
     contents: [ 
      { 
       id: 'tab-basic', 
       label: 'Basic Settings', 
       elements: [ 
        { 
         type: 'html', 
         id: '2', 
         label: 'Explanation', 
         html: "<div onclick=\"editor.insertHtml(' some code ')\">add code</a></div></div>" 
        } 
       ] 
      } 
     ], 
     onShow : function() 
      {   
      document.getElementById(this.getButton('ok').domId).style.display='none'; // disapper ok btn 
      }, 
     onOk: function() { 

      editor.insertHtml(' abbr '); 
     } 
    }; 
}); 

ответ

-1

При нажатии div элемент в вашем образце, editor не в вашей области. Вам нужно получить свой объект редактора и использовать его метод insertHtml:

CKEDITOR.instances.editor1.insertHtml('your text`) 

Этот пример предполагает, что ваша textarea идентификатор editor1.

+0

У меня есть много редакторов на странице. поэтому я не знаю, что такое идентификатор редактора ... – user186585

0
CKEDITOR.dialog.add('smiley2', function(editor) { 

    var onChoice = function(evt) { 
      var target; 
      target = new CKEDITOR.dom.element(evt); 
      editor.insertHtml("SMILEY YES!"); 
      CKEDITOR.dialog.getCurrent().hide(); 
    }; 
    var onClick = CKEDITOR.tools.addFunction(onChoice); 

    return { 
     title: 'Abbreviation Properties', 
     minWidth: 400, 
     minHeight: 200, 
     buttons: [CKEDITOR.dialog.cancelButton], 
     contents: [ 
      { 
       id: 'tab-basic', 
       label: 'Basic Settings', 
       elements: [ 
        { 
         type: 'html', 
         id: '2', 
         label: 'Explana22tion', 
         html: "<div onclick=\"CKEDITOR.tools.callFunction(" + onClick +", this); return false;\" >111111</a></div></div>" 
        } 
       ] 
      } 
     ] 

    }; 
});