it-swarm.com.de

TinyMCE 4 - entfernen () oder zerstören ()

Ich verwende TinyMCE-Editor. Ich möchte tinymce-Editoren entfernen oder löschen (Seite enthält mehr als einen Editor). Entfernen Sie auch die von tinyMCE hinzugefügten Klassen und IDs.

Aber bearbeitbare Inhalte belassen

Ich habe es versucht :

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

Bitte beachten Sie: 

meine Editor-Klasse ist .editable. Und ich habe mehr als einen Editor auf meiner Seite.

26
user007

Sie benötigen eine Editor-ID (die in der Regel Ihrer Editor-HTML-Stammelement-ID entspricht (in den meisten Fällen ein Textfeld)).

Beispiel:

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

Ich hatte das gleiche Problem. In Version 4 haben alle obigen Vorschläge für mich nicht funktioniert.

tinymce.remove("div.editable");

... regenerated HTML dynamicaly ...

tinymce.init(...);

Ich verwende den Inline-Editor:

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

Hoffe das hat geholfen

34
assassinatorr

Für den Fall, dass jemand hierher gekommen ist, der die jQuery-Version von TinyMce verwendet, verwenden Sie stattdessen Folgendes, um eine Instanz zu entfernen:

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

Der folgende Code funktioniert

tinymce.get(id).remove();
11
nikmauro

Einfach verwenden 

tinymce.remove()

um alle Editoren zu entfernen.

9
Janak Bhatta

Wenn textarea eine ID hat, wird diese von tinyMCE aus einem seltsamen Grund verwendet, auch wenn der Parameter selector verwendet wurde, um den Editor auf ein bestimmtes Element anzuwenden. Diese ID wird dann im internen Array verwendet - tinyMCE.editors, das nicht gelöscht wird (wird nicht gelöscht, wenn Sie tinymce.execCommand('mceRemoveControl', true, [id]) verwenden. remove entfernt tatsächlich editors und verhindert, dass tinyMCE erneut angewendet wird). Wenn Sie über einen dynamischen Inhalt verfügen, bei dem tinyMCE angewendet wird, funktioniert der Befehl einmal, jedoch nie mehr. Um dieses Problem zu beheben, müssen Sie dieses Array manuell per delete tinyMCE.editors[$(node).getAttribute('id')] bereinigen.

3
eithed

tinymce.EditorManager.remove () Dies funktionierte für mich

2
george

Wenn Sie über mehrere Instanzen von TinyMCE verfügen, können Sie den folgenden Codeausschnitt verwenden, um jede Instanz von TinyMCE zu schließen:

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

Ich verwende es, bevor der Ajax-Inhalt geladen wird.

2

Etwas spät zur Party, aber kürzlich habe ich die tinyMCE jQuery-Version zu meinem Winkelprojekt hinzugefügt. Aus einigen Gründen wollte ich den eckigen Code von Drittanbietern nicht verwenden und wollte nur, dass die jQuery-Version funktioniert. 

Also hier ist mein Code, um TinyMCE 4.x in eckig zu bringen, selbst mit ng-repeat.

Alles, was Sie tun müssen, ist, Ihre Textbereiche mit der Klasse "TinyMCEEditorBox" zu dekorieren und diese Methode jedes Mal aufzurufen, wenn Sie Elemente entfernen oder hinzufügen, die zu einem Update führen (z. B. wenn mehr Elemente zu einem Wiederholungswiederholungsschritt hinzugefügt werden).

$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);
}
1
JensB

Wenn Sie die Funktion tiyMCE.init ({}) verwenden, funktioniert die Antwort von @nikmauro für mich, sodass Sie bei jedem Entladen der Seite einfach das tinymce.get ("real_element_id") auslösen. Remove ();

Diese Methode funktioniert für mich.

BTW, ich amüsiere diese Version 

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

0
null_logic
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'});
}
0
Mem Maina

beim Anruf ist ein Fehler aufgetreten
elementReference.destroy() // destroy ist eine Dojo-Funktion
Wir haben diesen Code durch ersetzt
elementReference.domNode.remove()
wir haben auch tinymce.min.js verwendet und NS_ERROR_UNEXPECTED erhalten

0

Gefälschte jungfräuliche Website

TinyMCE prüft, ob es bereits in window.scripts Geladen ist. Wenn Sie den entsprechenden Eintrag entfernen, verhält sich TinyMCE wie ein unberührtes Dokument.

function cleanTinyMCE() {
  for (var i=0; i < window.scripts.length; i++) {
    if (window.scripts[i].match('.*tinymce.*js.*')){
      delete window.scripts[i];
      return;
    }
  }
}
0
Peter Rader

Verwenden Sie einfach diesen Code, um alle bearbeitbaren Textbereiche zu entfernen:

tinyMCE.remove (". editable");

Hier weitere Informationen über tinyMCE entfernen: http://archive.tinymce.com/wiki.php/api4:method.tinymce.EditorManager.remove.static

0