2010-09-11 6 views
10

Je crée et détruis de manière dynamique des zones de texte à cette fin. Cependant, quand je crée une zone de texte et ensuite une instance de celle-ci dans tinymce - puis revenez à la page à nouveau, cela ne fonctionne pas. J'ai trouvé que la solution consiste simplement à supprimer toute instance existante de ce même nom, mais je me demandais s'il est possible de le faire au démarrage.Comment supprimer toutes les instances tinymce au démarrage?

Merci d'avance!

Répondre

13

Vous devez vous assurer que les zones de texte ou les autres éléments pour lesquels vous créez une instance minuscule doivent avoir des identifiants différents.

Pour supprimer toutes les instances de tinymce vous pouvez l'utiliser (tinymce3):

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

Pour tinymce4 utilisation:

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

Assurez-vous de fermer les instances de la bonne façon lorsque vous essayez de réinitialiser un tinymce exemple. Sinon, votre fenêtre d'éditeur peut rester blanche ou elle n'est pas éditable du tout.

+1

cela ne fonctionne pas parce que la collection tinymce.editors.length diminue en taille – P6345uk

+1

@ P6345uk: correct, je pris en compte maintenant – Thariama

+0

Cool c'était rapide – P6345uk

0

Vous pouvez utiliser ces lignes en fonction onload de javascript ou sur la sauvegarde sous forme d'instance précédente

if (tinyMCE.getInstanceById(id) != null) 
{ 
    tinyMCE.execCommand('mceRemoveControl', true, id); 
} 

où id est l'id de textarea ou entrée sur laquelle la tinymce est présente

0

Comme précédemment @ P6345uk a déclaré dans les commentaires, la collection tinymce.editors.length est en baisse de taille. Puisque le code de @Thariama n'a pas fonctionné pour moi aussi, j'ai fait la mise à jour et ai fait ces lignes. Travaillé pour moi, essayez-le aussi.

var length = tinymce.editors.length; 
if(length>0){ 
    for (var i=0; i<length; i++) { 
     tinyMCE.execCommand('mceRemoveControl',false, tinymce.editors[0].id); 
    }; 
} 
6

Mon collègue Beni a découvert une solution intelligente pour supprimer tous les TinyMCEs existants:

if(typeof(tinyMCE) !== 'undefined') { 
    var length = tinyMCE.editors.length; 
    for (var i=length; i>0; i--) { 
    tinyMCE.editors[i-1].remove(); 
    }; 
} 
1

C'est ce que j'utilise et semble bien fonctionner:

while (tinymce.editors.length > 0) { 
    tinymce.remove(tinymce.editors[0]); 
} 
9

Pour les œuvres me cette solution:

tinymce.editors = []; 

S o, vous pouvez effacer le tableau des éditeurs d'abord et l'éditeur avec réinitialise INIT:

tinymce.editors = []; 
tinymce.init({ 
    selector: 'textarea.tinymce', 
    ... 
}); 
+1

cela a résolu le problème sur firefox. Great – anhnt

+1

Cela devrait être la réponse acceptée! Simple, fonctionne bien dans IE (11 pour moi) ainsi. – toni07

+0

+1. Seule chose qui a fonctionné pour moi (tinymce 4.3.13, firefox 47, plusieurs instances de l'éditeur dans les onglets jquery ui, où l'utilisateur doit constamment modifier les onglets et modifier le contenu de l'éditeur) – andrew