Подтвердить что ты не робот

Как удалить все экземпляры tinymce при запуске?

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

Спасибо заранее!

4b9b3361

Ответ 1

Вы должны убедиться, что текстовые области или другие элементы, для которых вы создаете крошечный экземпляр, должны иметь разные идентификаторы.

Чтобы удалить все экземпляры tinymce, вы можете использовать (tinymce3):

        for (var i = tinymce.editors.length - 1 ; i > -1 ; i--) {
            var ed_id = tinymce.editors[i].id;
            tinyMCE.execCommand("mceRemoveControl", true, ed_id);
        }

Для использования tinymce4:

        for (var i = tinymce.editors.length - 1 ; i > -1 ; i--) {
            var ed_id = tinymce.editors[i].id;
            tinyMCE.execCommand("mceRemoveEditor", true, ed_id);
        }

Убедитесь, что при попытке повторной инициализации экземпляра tinymce обязательно верните экземпляры. В противном случае ваше окно редактора может оставаться белым или вообще не редактироваться.

Ответ 2

Для меня это решение:

 tinymce.editors = [];

Итак, вы можете сначала очистить массив редакторов и повторно инициализировать редактор с помощью init:

 tinymce.editors = [];
 tinymce.init({
    selector: 'textarea.tinymce',
    ...
 });

Ответ 3

Мой коллега Бени обнаружил умное решение для удаления всех существующих TinyMCE:

if(typeof(tinyMCE) !== 'undefined') {
  var length = tinyMCE.editors.length;
  for (var i=length; i>0; i--) {
    tinyMCE.editors[i-1].remove();
  };
}

Ответ 4

Это то, что я использую и, кажется, работает нормально:

while (tinymce.editors.length > 0) {
    tinymce.remove(tinymce.editors[0]);
}

Ответ 5

Вы можете использовать эти строки в функции onload javascript или в форме сохранения предыдущего экземпляра

if (tinyMCE.getInstanceById(id) != null)
{
  tinyMCE.execCommand('mceRemoveControl', true, id);
}

где id - идентификатор textarea или ввода, на котором присутствует tinyMce

Ответ 6

Как ранее @P6345uk сказал в комментариях, коллекция tinymce.editors.length уменьшается в размере.

Поскольку код от @Thariama не работал у меня тоже, я сделал обновление и сделал эти строки. Работал для меня, попробуйте тоже.

var length = tinymce.editors.length;
if(length>0){
    for (var i=0; i<length; i++) {
        tinyMCE.execCommand('mceRemoveControl',false, tinymce.editors[0].id); 
    };
}