2010-09-11 3 views
10

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

Заранее благодарен!

ответ

13

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

Чтобы удалить все экземпляры 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 пример. В противном случае окно редактора может оставаться белым или вообще не редактироваться.

+1

это не будет работать, потому что сбор tinymce.editors.length уменьшается в размерах – P6345uk

+1

@ P6345uk: правильно, я принял это во внимание теперь – Thariama

+0

Прохладно, что было быстро – P6345uk

0

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

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

где идентификатор идентификатор текстового поля или ввода, на котором TinyMCE присутствует

0

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

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

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

Мой коллега Бени обнаружил интеллектуальное решение, чтобы удалить все существующие TinyMCEs:

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

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

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

работает для меня этот раствор:

tinymce.editors = []; 

S о, вы можете очистить массив редакторов первой и переинициализировать редактор с INIT:

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

исправлена ​​проблема с firefox. Great – anhnt

+1

Это должен быть принятый ответ! Простой, хорошо работает в IE (11 для меня). – toni07

+0

+1. Единственное, что сработало для меня (tinymce 4.3.13, firefox 47, несколько экземпляров редактора на вкладках jquery ui, где пользователю необходимо постоянно менять вкладки и изменять содержимое редактора) – andrew

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