CKEditor: как удалить плагин, который был добавлен? - PullRequest
5 голосов
/ 07 января 2012

Я только начинаю использовать CKEditor, но с трудом разбираюсь в системе плагинов.

Мне удалось добавить простую кнопку с надписью «Тест», когда вы нажимаете на нее с помощью:

  var myplugin_function = function () {
    alert('Test');
  }
  var plugin_name='myplugin';
  CKEDITOR.plugins.add(plugin_name,   
  {    
    init:function(c) {
      c.addCommand(plugin_name,myplugin_function);
      c.ui.addButton(plugin_name, 
      {
       label:'This is my plugin',
       command:plugin_name,
       icon:this.path+'myplugin.png'
      });
    }
  });

Я знаю, что этот код должен выполняться только один раз, например, в plugin.js, но я не так его использую. Экземпляр CKEditor, включая мой код плагина, выполняется каждый раз при загрузке Ajax-страницы.

Вот почему я использую это для удаления экземпляра, если он существует:

  if (CKEDITOR.instances['mytextarea']) {
    CKEDITOR.remove(CKEDITOR.instances['mytextarea']);
  }

Затем я использую способ jquery, чтобы создать ckeditor из текстовой области:

$('#mytextarea').ckeditor();

Но во время второй загрузки ajax-страницы я получаю сообщение об ошибке, что плагин уже зарегистрирован. Поэтому мне нужен способ удалить плагин и иметь возможность добавить его снова .

Это вообще возможно?

UPDATE

Кажется, это работает:

Теперь я проверяю, зарегистрирован ли плагин:

if (!CKEDITOR.plugins.registered[plugin_name]) {

}

вокруг CKEDITOR.plugins.add(b, ... детали

1 Ответ

1 голос
/ 08 января 2012

Вы не показываете, как вы добавляете плагин, поэтому трудно сказать, в чем именно ваша проблема; но из предоставленного вами кода я могу предложить, чтобы вы использовали имена переменных лучше, чем «a», «b» и «c». Сложно понять код таким способом.

Кроме того, CKEDITOR.remove просто удаляет экземпляр из массива экземпляров, но на самом деле не очищает использованные ресурсы, вы должны использовать CKEDITOR.instances ['mytextarea']. destroy (правда) вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...