web-dev-qa-db-fra.com

TinyMCE 4 - remove () ou destroy ()

J'utilise TinyMCE editor. Je souhaite supprimer ou détruire les éditeurs tinymce (la page contient plus d'un éditeur). Supprimez également les classes et les identifiants ajoutés par tinyMCE.

Mais laisse un contenu éditable

J'ai essayé :

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

Notez s'il vous plaît: 

ma classe d'éditeur est .editable, et j'ai plus d'un éditeur dans ma page.

26
user007

Vous avez besoin d’un identifiant d’éditeur (qui correspond généralement à votre identifiant d’éléments racine HTML (dans la plupart des cas, textarea)).

Exemple:

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

J'ai eu le même problème. Dans la v4, toutes les suggestions ci-dessus ne fonctionnaient pas pour moi, mais cela fonctionnait:

tinymce.remove("div.editable");

... regenerated HTML dynamicaly ...

tinymce.init(...);

J'utilise l'éditeur en ligne:

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

J'espère que cela a aidé

34
assassinatorr

Juste au cas où quelqu'un arriverait ici et utiliserait la version jQuery de TinyMce, utilisez plutôt le code suivant pour supprimer une instance :

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

Le code suivant fonctionne

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

Simplement utiliser 

tinymce.remove()

supprimer tous les éditeurs.

9
Janak Bhatta

Gardez à l'esprit que si textarea est donné avec un id, tinyMCE l'utilisera pour une raison étrange, même si le paramètre selector a été utilisé pour appliquer editor à un élément donné. Cet identifiant est ensuite utilisé dans le tableau interne - tinyMCE.editors qui n'est pas effacé (n'est pas effacé si vous utilisez tinymce.execCommand('mceRemoveControl', true, [id]), remove supprime en fait editors et empêche que tinyMCE soit à nouveau appliqué). En tant que tel, si vous avez un contenu dynamique avec tinyMCE appliqué, cela fonctionnera une fois, mais plus jamais. Pour résoudre ce problème, vous devez nettoyer ce tableau manuellement par delete tinyMCE.editors[$(node).getAttribute('id')].

3
eithed

tinymce.EditorManager.remove () Cela fonctionnait pour moi

2
george

Si vous avez plusieurs instances de TinyMCE, vous pouvez utiliser le fragment de code suivant pour fermer chaque instance de TinyMCE:

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

Je l'utilise avant que le contenu Ajax ne soit chargé.

2

Un peu tard dans la soirée, mais j’ai récemment ajouté la version tinyMCE jQuery à mon projet angular. Pour plusieurs raisons, je ne souhaitais pas utiliser le code tiers angulaire et souhaitais simplement que la version jQuery fonctionne. 

Voici donc mon code pour faire fonctionner TinyMCE 4.x de manière angulaire, même avec ng-repeat.

Tout ce que vous avez à faire est de décorer votre zone de texte avec la classe "TinyMCEEditorBox" et d'appeler cette méthode chaque fois que vous supprimez ou ajoutez des éléments qui entraînent une mise à jour (tels que l'ajout d'éléments supplémentaires à un 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);
}
1
JensB

Lorsque vous utilisez la fonction tiyMCE.init ({}), la réponse de @nikmauro fonctionne pour moi. Par conséquent, pour chaque déchargement de la page, vous ne déclenchez que tinymce.get ("real_element_id").

Cette méthode fonctionne pour moi.

BTW, j'amuse cette 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

Vous devez simplement utiliser ce code pour supprimer toute la zone de texte modifiable:

tinyMCE.remove (". editable");

Voici plus d'informations sur tinyMCE supprimer: http://archive.tinymce.com/wiki.php/api4:method.tinymce.EditorManager.remove.static

0
Michele Caggiano