2010-09-11 11 views
10

Estoy creando y destruyendo dinámicamente áreas de texto para este propósito. Sin embargo, cuando creo un área de texto y luego una instancia en tinymce, vuelvo a la página y no funciona. Descubrí que la solución es simplemente eliminar cualquier instancia existente del mismo nombre, pero me preguntaba si es posible hacerlo al inicio.¿Cómo elimino todas las instancias de tinymce en el inicio?

¡Gracias de antemano!

Respuesta

13

Debe asegurarse de que las áreas de texto u otros elementos para los que crea una instancia pequeña necesitan tener identificadores diferentes.

Para eliminar todas las instancias tinymce puede usar (tinymce3):

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

Para tinymce4 uso:

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

Asegúrese de cerrar casos el camino correcto cuando intenta reiniciar un tinymce ejemplo. De lo contrario, la ventana del editor podría permanecer en blanco o no se puede editar en absoluto.

+1

esto no funcionaría porque la colección tinymce.editors.length está disminuyendo en tamaño – P6345uk

+1

@ P6345uk: correcta, tomé esto en cuenta ahora – Thariama

+0

Cool que fue rápido – P6345uk

0

Puede utilizar estas líneas en la función onload del Javascript o en el ahorro de forma de instancia anterior

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

donde id es el identificador del área de texto o una entrada en la que el tinymce está presente

0

Como anteriormente @ P6345uk dijo en comentarios, la colección tinymce.editors.length está disminuyendo en tamaño.

Como el código de @Thariama tampoco funcionó, hice una actualización e hice estas líneas. Funcionó para mí, pruébalo también.

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

Mi colega Beni descubrieron una solución inteligente para eliminar todos los TinyMCEs existentes:

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

Esto es lo que estoy usando y parece funcionar bien:

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

Para mí los trabajos esta solución:

tinymce.editors = []; 

S O, puede borrar la matriz editores primero y reinicializar el editor con init:

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

esto solucionó el problema en firefox. Genial – anhnt

+1

¡Esta debería ser la respuesta aceptada! Simple, funciona bien en IE (11 para mí) también. – toni07

+0

+1. Lo único que funcionó para mí (tinymce 4.3.13, firefox 47, varias instancias de editor en las pestañas jquery ui, donde el usuario necesita cambiar las pestañas constantemente y alterar los contenidos del editor) – andrew

Cuestiones relacionadas