Ответ 1
Вам нужен идентификатор редактора (который обычно равен вашему редактору html root element id (в большинстве случаев текстовое поле)).
Пример:
tinymce.execCommand('mceRemoveControl', true, 'my_original_textarea_id');
Я использую редактор TinyMCE. Я хочу удалить или уничтожить редакторы tinymce (Страница содержит более одного редактора). Также удалите классы и идентификаторы, добавленные tinyMCE.
Но оставить редактируемое содержимое
Я пробовал:
tinymce.remove()
tinymce.destroy()
tinymce.execCommand('mceRemoveControl',true,'.editable');
Обратите внимание:
мой класс редактора .editable
, и у меня на моей странице более одного редактора.
Вам нужен идентификатор редактора (который обычно равен вашему редактору html root element id (в большинстве случаев текстовое поле)).
Пример:
tinymce.execCommand('mceRemoveControl', true, 'my_original_textarea_id');
У меня была та же проблема. В v4 все предложения выше не работали для меня, но это делало:
tinymce.remove("div.editable");
... regenerated HTML dynamicaly ...
tinymce.init(...);
Я использую встроенный редактор:
tinymce.init({
selector: "div.editable",
inline: true,
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste"
],
menubar: false,
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"});
Надеюсь, что это помогло
На всякий случай, когда кто-либо прибыл сюда, кто использует версию jQuery TinyMce, используйте вместо этого вместо экземпляр следующее:
$("#textarea_id").tinymce().remove();
Работает следующий код
tinymce.get(id).remove();
Просто используйте
tinymce.remove()
чтобы удалить все редакторы.
Имейте в виду, что если заданный textarea
имеет id, tinyMCE будет использовать его по какой-то странной причине, даже если параметр selector
использовался для применения редактора к данному элементу. Этот идентификатор затем используется во внутреннем массиве - tinyMCE.editors
, который не очищается (не очищается, если вы используете tinymce.execCommand('mceRemoveControl', true, [id])
, remove
фактически удаляет editors
и предотвращает повторное применение tinyMCE). Таким образом, если у вас есть динамический контент с применением tinyMCE, он будет работать один раз, но никогда больше. Чтобы решить эту проблему, вам необходимо очистить этот массив вручную за delete tinyMCE.editors[$(node).getAttribute('id')]
Если у вас несколько экземпляров TinyMCE, вы можете использовать следующий фрагмент кода, чтобы закрыть каждый экземпляр TinyMCE:
for (var i = tinymce.editors.length - 1 ; i > -1 ; i--) {
var ed_id = tinymce.editors[i].id;
tinyMCE.execCommand("mceRemoveEditor", true, ed_id);
}
Я использую его перед загрузкой содержимого Ajax.
tinymce.EditorManager.remove() Это работало для меня
Немного поздно для вечеринки, но недавно я добавил версию jQuery tinyMCE в мой проект angular. По нескольким причинам я не хотел использовать angular сторонний код и просто хотел, чтобы версия jQuery работала.
Итак, вот мой код для работы TinyMCE 4.x в angular, даже с ng-repeat.
Все, что вам нужно сделать, - это украсить ваши текстовые области классом "TinyMCEEditorBox" и вызвать этот метод в любое время, когда вы удаляете или добавляете элементы, которые приводят к обновлению (например, добавляются дополнительные элементы в ng-repeat).
$scope.RebindTinyMCE = function ()
{
var tmceSelector = ".TinyMCEEditorBox";
for (var i = tinymce.editors.length - 1 ; i > -1 ; i--)
{
tinyMCE.execCommand("mceRemoveEditor", true, tinymce.editors[i].id);
}
setTimeout(function () {
$(tmceSelector).tinymce({
menubar: false,
statusbar: false,
toolbar: 'bold italic underline | alignleft aligncenter alignright | bullist numlist outdent indent | link',
});
}, 50);
}
При использовании tiyMCE.init({}) fuction ответ by @nikmauro работает для меня, поэтому для каждой разгрузки страницы вы просто запускаете tinymce.get( "real_element_id" ). remove();
Этот метод работает для меня.
Кстати, я занимаюсь этой версией
//tinymce.cachefly.net/4.1/tinymce.min.js
мы получили ошибку при вызове elementReference.destroy()
//destroy - это функция dojo, которую мы заменили этим кодом с помощью elementReference.domNode.remove()
мы также использовали tinymce.min.js, и это давало нам NS_ERROR_UNEXPECTED
if (typeof tinyMCE != 'undefined') {
if (tinyMCE.activeEditor == null || tinyMCE.activeEditor.isHidden() != false) {
tinyMCE.editors=[];
}
tinyMCE.editors=[]; tinymce.init({selector:'textarea', plugins : 'advlist autolink link image lists charmap print preview'});
}else{
tinymce.init({selector:'textarea', plugins : 'advlist autolink link image lists charmap print preview'});
}
Вам нужно просто использовать этот код, чтобы удалить все редактируемые текстовые области:
tinyMCE.remove( "редактируется.");
Здесь больше информации о крошечном удалении MCE: http://archive.tinymce.com/wiki.php/api4:method.tinymce.EditorManager.remove.static
TinyMCE проверит, загружен ли он уже в window.scripts
. Если вы удалите соответствующую запись, TinyMCE будет вести себя так, как будто это нетронутый документ.
function cleanTinyMCE() {
for (var i=0; i < window.scripts.length; i++) {
if (window.scripts[i].match('.*tinymce.*js.*')){
delete window.scripts[i];
return;
}
}
}