Удалить контроль TinyMCE и повторно добавить

У меня есть приложение js, которое никогда не перезагружает страницу, поэтому при навигации мне нужно полностью удалить элементы управления TinyMCE, а затем я хочу выполнить повторную инициализацию при переходе в область, которая в этом нуждается. Я попробовал принятый ответ на этот вопрос, но, похоже, ничего не сделал.

Как я могу удалить tinyMCE и затем добавить его?

<code> tinymce.EditorManager.execCommand('mceRemoveControl',true, editor_id);
</code>

и мой конкретный подтекст:

<code>  //if I throw an alert here, it does get called, so I know it's not null
  if (tinyMCE.getInstanceById("main-text"))
            tinyMCE.EditorManager.execCommand('mceRemoveControl', true, "main-text");
</code>

Я тоже пробовал

<code>  tinyMCE.remove( tinyMCE.getInstanceById("main-text"));
  // AND
  tinyMCE.remove( "main-text");
</code>

Я знаю, что это утверждение выполняется, когда я помещаю предупреждение в условное выражение ... Я знаю, что это правильный идентификатор ... Есть ли еще что-то скрытое в API, которое мне не хватает? Это не версия JQuery. Редактор сохраняется после попытки удаления, и я даже получаю новый с тем же идентификатором, если я заново его инициализирую, возвращаясь в состояние с помощью формы.

EDIT: the solution below does not work in current build 3.5b3, only in 3.4.9. There is a bug where 't is undefined'

На всякий случай, это соответствующая часть DOM после init.

<code> <textarea id="main-text" style="display: none;" aria-hidden="true"></textarea>
<span id="main-text_parent" class="mceEditor defaultSkin" role="application" aria-labelledby="main-text_voice" style="display: inherit;">
<span id="main-text_voice" class="mceVoiceLabel" style="display:none;">Rich Text Area</span>
<table id="main-text_tbl" class="mceLayout" cellspacing="0" cellpadding="0" role="presentation" style="width: 100%; height: 400px;">
<tbody>
<tr class="mceFirst" role="presentation">
<td class="mceToolbar mceLeft mceFirst mceLast" role="presentation">
<div id="main-text_toolbargroup" aria-labelledby="main-text_toolbargroup_voice" role="group" tabindex="-1">
<span role="application">
</div>
<a onfocus="tinyMCE.getInstanceById('main-text').focus();" title="Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X" accesskey="z" href="#"></a>
</td>
</tr>
<tr>
<tr class="mceLast">
</tbody>
</table>
</span>
</code>

Ответы на вопрос(2)

Решение Вопроса

убедитесь, что элемент управления tinyMCe не имеет фокуса (вызывает некоторые ошибки в некоторых браузерах), удалите элемент управления tinyMCE и удалите текстовую область, с которой был связан элемент управления.

Вот соответствующий код:

if (typeof tinyMCE != 'undefined') {
    tinyMCE.execCommand('mceFocus', false, 'main-text');
    tinyMCE.execCommand('mceRemoveControl', false, 'main-text');
    var container = document.getElementById('main-text-parent');
    container.removeChild(document.getElementById('main-text'));  
    //i normally just do $("#main-text").remove(); but you specified not using jquery, so this should, in theory, remove it, if main-text-parent is replaced with the parent container of your main-text.
}
 29 янв. 2014 г., 16:31
где документация для каких команд будет выполнять функция execCommand? В руководстве просто сказано, что первым параметром является «команда для выполнения». и в руководстве нет ссылки на «mceRemoveControl».
 30 янв. 2014 г., 17:33

tinymce 4.X есть поддержка для удаления редактора или страницы формы редактора, просто вызывая функцию удаления.

http://www.tinymce.com/wiki.php/api4:method.tinymce.remove

// Remove all editors bound to divs
tinymce.remove('div');

// Remove all editors bound to textareas
tinymce.remove('textarea');

// Remove all editors
tinymce.remove();

// Remove specific instance by id
tinymce.remove('#id');
 28 апр. 2014 г., 19:20
Спасибо вам большое!

Ваш ответ на вопрос