Проблема с уничтожением редактора из плагина заключается в том, что определенный код пытается использовать редактор после деструктивного кода плагина, когда на самом деле редактора больше нет, что вызывает ошибки и нестабильность.
Я придумал следующий код для плагина, который закрывает редактор, используя async: true и setTimeout:
var cancelAddCmd =
{
modes : { wysiwyg:1, source:1 },
async: true,
exec : function( editor )
{
if(confirm('Are you sure you want to cancel editing and discard all content?')) setTimeout(function() { editor.destroy(); }, 100);
}
};
Проблема, которую я вижу, состоит в том, что он использует хитрый вызов setTimout, который, вероятно, имел бы смешанные результатыв зависимости от скорости выполнения компьютера - 100 мсек может не пройти к тому времени, когда будет нормально уничтожить редактор.
Есть ли правильный способ уничтожить редактор из плагина?Даже с асинхронным: правда;и никаких ошибок setTimeout не создается.
Возможно, возможно, было бы возможным решение остановить любой существующий / любой другой код, связанный с редактором, после запуска, если это возможно?
Я пыталсяиспользование событий, таких как on ('afterCommandExec', function () {editor.destroy ();}) и некоторых других событий, но это не очень помогло ... не похоже, что есть событие, когда редакторвыпрыгнул из своего стекового вызова для обработки кнопки.
И нет способа остановить выполнение путем более правильного удаления экземпляра CKEditor?