2017-02-02 4 views
0

Наше веб-приложение регулярно создает и уничтожает редакторов ckeditor. Мы наблюдаем утечку памяти в Chrome, и после профилирования кажется, что ссылки на ckeditor удерживаются из-за вызова ckeditor.tools.bind. Должен ли editor.destroy удалить эти привязки? Если нет, есть ли способ удалить их самостоятельно?Отмена событий ckeditor, добавленных cceditor.tools.bind

Пример кода, который демонстрирует проблему (время выходы добавляются, чтобы увидеть, если выбор времени является проблема)

var editor; 

    function replaceDiv() { 
     if (editor) { 
      editor.destroy(); 
     } 
     setTimeout(function() { 
      editor = CKEDITOR.replace(document.getElementById("editable2")); 
      setTimeout(function() { replaceDiv()}, 1000); 
     }, 1000); 
    } 
+0

Теоретически это должно быть, но если некоторый плагин связывает события с глобальным объект, такой как CKEDITOR, каждый раз, когда он создается, и он не заботится о том, чтобы очистить его, тогда может возникнуть такая проблема. – AlfonsoML

+0

На самом деле я не уверен, что это связано с привязками, я думаю, что это связано с тем, что мы удаляем элементы из DOM сразу после вызова destroy. – Doogal

+0

Конечно, это может быть проблемой. Я не уверен, что метод destroy является синхронным, и если он обнаружит проблему, он может остановиться, не показывая никаких ошибок. Можете ли вы попытаться удалить элементы в течение 1 секунды, просто чтобы проверить? – AlfonsoML

ответ

0

Основная проблема заключалась в том, что у меня был другой редактор, который всегда активен. Кажется, что ckeditor выполняет некоторые специальные операции, когда последний редактор уничтожается. Поскольку мы никогда не доходили до нулевых редакторов, это домашнее хозяйство не удавалось. Я буду создавать и уничтожать наш другой редактор по мере необходимости, поскольку это не всегда видно

Смежные вопросы