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

TinyMCE 4 - remove() или destroy()

Я использую редактор TinyMCE. Я хочу удалить или уничтожить редакторы tinymce (Страница содержит более одного редактора). Также удалите классы и идентификаторы, добавленные tinyMCE.

Но оставить редактируемое содержимое

Я пробовал:

tinymce.remove()
tinymce.destroy()
tinymce.execCommand('mceRemoveControl',true,'.editable');

Обратите внимание:

мой класс редактора .editable, и у меня на моей странице более одного редактора.

4b9b3361

Ответ 1

Вам нужен идентификатор редактора (который обычно равен вашему редактору html root element id (в большинстве случаев текстовое поле)).

Пример:

tinymce.execCommand('mceRemoveControl', true, 'my_original_textarea_id');

Ответ 2

У меня была та же проблема. В 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"});

Надеюсь, что это помогло

Ответ 3

На всякий случай, когда кто-либо прибыл сюда, кто использует версию jQuery TinyMce, используйте вместо этого вместо экземпляр следующее:

$("#textarea_id").tinymce().remove();

Ответ 4

Работает следующий код

tinymce.get(id).remove();

Ответ 5

Просто используйте

tinymce.remove()

чтобы удалить все редакторы.

Ответ 6

Имейте в виду, что если заданный textarea имеет id, tinyMCE будет использовать его по какой-то странной причине, даже если параметр selector использовался для применения редактора к данному элементу. Этот идентификатор затем используется во внутреннем массиве - tinyMCE.editors, который не очищается (не очищается, если вы используете tinymce.execCommand('mceRemoveControl', true, [id]), remove фактически удаляет editors и предотвращает повторное применение tinyMCE). Таким образом, если у вас есть динамический контент с применением tinyMCE, он будет работать один раз, но никогда больше. Чтобы решить эту проблему, вам необходимо очистить этот массив вручную за delete tinyMCE.editors[$(node).getAttribute('id')]

Ответ 7

Если у вас несколько экземпляров 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.

Ответ 8

tinymce.EditorManager.remove() Это работало для меня

Ответ 9

Немного поздно для вечеринки, но недавно я добавил версию 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);
}

Ответ 10

При использовании tiyMCE.init({}) fuction ответ by @nikmauro работает для меня, поэтому для каждой разгрузки страницы вы просто запускаете tinymce.get( "real_element_id" ). remove();

Этот метод работает для меня.

Кстати, я занимаюсь этой версией

//tinymce.cachefly.net/4.1/tinymce.min.js

Ответ 11

мы получили ошибку при вызове elementReference.destroy()//destroy - это функция dojo, которую мы заменили этим кодом с помощью elementReference.domNode.remove()
мы также использовали tinymce.min.js, и это давало нам NS_ERROR_UNEXPECTED

Ответ 12

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'});
}

Ответ 14

Поддельный девственный сайт

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;
    }
  }
}