Foros del Web » Programando para Internet » Javascript »

Cómo insertar texto en value de TinyMCE

Estas en el tema de Cómo insertar texto en value de TinyMCE en el foro de Javascript en Foros del Web. Hola a todos! Soy nuevo en el foro y bastante novato en Javascript... Veréis, tengo un problema con el editor de texto Tiny MCE: no ...
  #1 (permalink)  
Antiguo 03/12/2012, 13:57
Avatar de edballo  
Fecha de Ingreso: diciembre-2012
Ubicación: Valencia
Mensajes: 5
Antigüedad: 11 años, 11 meses
Puntos: 0
Pregunta Cómo insertar texto en value de TinyMCE

Hola a todos!
Soy nuevo en el foro y bastante novato en Javascript...
Veréis, tengo un problema con el editor de texto Tiny MCE: no sé cómo insertar en el editor un texto que extraigo de un DIV del siguiente modo:
Código:
var tx = document.getElementById('div_id').firstChild.nodeValue;
Primero probé a hacerlo como si se tratara de un textarea corriente:
Código:
document.getElementById('textarea_id').value = tx;
También probé con innerHTML o creando un nodo de texto y añadiéndolo con appendChild... Pero nada.

Tras haber indagado bastante, descubrí que esa no era la manera y probé con:
Código:
ed = tinyMCE.get('textarea_id');
ed.setContent(tx, {format : 'raw'});
y tampoco parece funcionar. Sin embargo, si le paso un alert con ed.getContent(), sí me devuelve el contenido de la variable tx, pero el editor permanece en blanco...

No sé qué más probar... ¿alguien sabe por qué pasa ésto?
  #2 (permalink)  
Antiguo 05/12/2012, 09:28
Avatar de edballo  
Fecha de Ingreso: diciembre-2012
Ubicación: Valencia
Mensajes: 5
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Cómo insertar texto en value de TinyMCE

He acotado el problema...
Si el textarea (y el formulario) se carga cuando la página, y el texto a insertar también, no hay problema alguno y funciona setContent. El problema viene cuando el texto que pretendo insertar en el editor se carga posteriormente mediante AJAX... Ese texto ya no me deja meterlo en el tinyMCE!
¿Hay alguna manera de hacer lo que pretendo? ¿o no tengo más remedio que volver a cargar la página entera?
  #3 (permalink)  
Antiguo 05/12/2012, 09:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 6 meses
Puntos: 839
Respuesta: Cómo insertar texto en value de TinyMCE

El setContent() debería funcionar, ¿tienes la página subida en algún servidor para verlo funcionando?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 05/12/2012, 13:39
Avatar de edballo  
Fecha de Ingreso: diciembre-2012
Ubicación: Valencia
Mensajes: 5
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Cómo insertar texto en value de TinyMCE

No, de momento estoy trabajando en local.
He resumido el problema en los siguientes tres archivos:

Ejemplo1.html
Código HTML:
Ver original
  1.     <div id="mform" class="visible">
  2.     <form method="post" action="admin.php" id="wform" name="formiga">
  3.         <textarea cols="50" rows="15" name="content" id="textA"></textarea>
  4.         <input type="submit" value="Send" />
  5.     </form>
  6.     </div>
  7.     <div id="caja"></div>
  8. </body>
Ejemplo1.js
Código Javascript:
Ver original
  1. tinyMCE.init({
  2.         mode : "textareas"
  3. });
  4. function createXMLHttpRequest(){
  5.     var xmlHttp = null;
  6.     xmlHttp = new XMLHttpRequest();
  7.     return xmlHttp;
  8. }
  9. var connection1;
  10. function loadPage(url){
  11.     if(url==''){
  12.     return;
  13.     }
  14.     connection1=createXMLHttpRequest();
  15.     connection1.onreadystatechange = function(){if(connection1.readyState == 4) {var container = connection1.responseText; writeText(container);}}
  16.     connection1.open("GET", url, true);
  17.     connection1.send(null);
  18. }
  19.  
  20. window.addEventListener('load',loadPage('ejemplo.php'),false);
  21.  
  22. function writeText(content){
  23. var caj = document.getElementById('caja');
  24. caj.innerHTML=content;
  25. var ed = tinyMCE.get('textA');
  26. ed.setContent(content, {format: 'html'});
  27. }

Ejemplo1.php
Código PHP:
Ver original
  1. <?php
  2. echo " <p>Éste es el texto que <strong>quiero insertar</strong></p> ";
  3. ?>

Lo acabo de probar en IE9 y milagrosamente funciona! Sin embargo en Chrome no... Me escribe el content en el div 'caja' pero el setContent falla. Por qué puede ser?
Muchas gracias, David, por responder!
  #5 (permalink)  
Antiguo 05/12/2012, 14:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 6 meses
Puntos: 839
Respuesta: Cómo insertar texto en value de TinyMCE

Por lo visto el tinyMCE tiene un retardo para terminar de iniciarse, por lo que cuando intentas llamar a tinyMCE.get() no obtiene ningún resultado. Puedes usar el callback oninit en lugar del evento load de la página para solucionar el problema:
http://www.tinymce.com/wiki.php/Configuration:oninit
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 05/12/2012, 15:13
Avatar de edballo  
Fecha de Ingreso: diciembre-2012
Ubicación: Valencia
Mensajes: 5
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Cómo insertar texto en value de TinyMCE

mmmm... ¿eso no sería igual que llamar al tinyMCE.get() desde un setTimeout?
  #7 (permalink)  
Antiguo 05/12/2012, 15:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 6 meses
Puntos: 839
Respuesta: Cómo insertar texto en value de TinyMCE

No exactamente, con setTimeout le indicas un tiempo arbitrario, con el callback oninit lo ejecutas exactamente cuando el TinyMCE está listo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Etiquetas: funcion, html, tinymce
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:32.