Foros del Web » Programando para Internet » Javascript »

Insertar txt en donde esta el cursor

Estas en el tema de Insertar txt en donde esta el cursor en el foro de Javascript en Foros del Web. Hola a todos! En mi sitio tengo un editor de texto incorporado para enviar comentarios, que utiliza una iframe para poder mostrar la edicion a ...
  #1 (permalink)  
Antiguo 08/07/2010, 22:26
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 5 meses
Puntos: 0
Busqueda Insertar txt en donde esta el cursor

Hola a todos!
En mi sitio tengo un editor de texto incorporado para enviar comentarios, que utiliza una iframe para poder mostrar la edicion a tiempo real. Cuando el formulario es enviado, antes de mandar los datos, copia todo lo editado a un textarea oculto.
Quiero incorporar un sistema de caritas a mi web, pero solo he podido lograr que se inserten al final de lo que estoy escribiendo y no donde tengo situado el puntero o donde tengo texto seleccionado.
¿Alguien tiene alguna idea o fragmento de código para que pueda hacerlo?
He encontrado varios scripts, pero solo funcionan con textareas de un formulario...
  #2 (permalink)  
Antiguo 08/07/2010, 23:12
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 6 meses
Puntos: 834
Respuesta: Insertar txt en donde esta el cursor

Investigá acerca de execCommand y el argumento InsertImage:
http://www.mozilla.org/editor/midas-spec.html
http://www.disegnocentell.com.ar/notas2.php?id=180
Y mucho cuidado en los filtros del lado del servidor si guardás los resultados en base de datos: la falta de control es muy peligrosa cuando se pone a disposición de los visitantes esta herramienta.
  #3 (permalink)  
Antiguo 10/07/2010, 11:39
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Insertar txt en donde esta el cursor

Gracias por responder
Estuve probando parte del código que encontré en el segundo enlace y me parece que lo que yo necesito es "insertar HTML", solo que le debo pasar el valor directamente.
La función que usa para esto se llama inHTML()
Código:
var editor; 
function $(id){ 
    return document.getElementById(id); 
}
function inHTML(){ 
    var u,u2; 
    if(!(u=prompt('ingresar html','')))return; 
     
        try{ 
            editor.execCommand("inserthtml",false,u); 
        }catch(e){ 
            try{ 
                editor.body.focus(); 
                u2=editor.selection.createRange(); 
                u2.pasteHTML(u); 
            }catch(E){ 
                alert('nop'); 
            } 
        } 
}
window.onload=function(){ 
     
    editor=$('edit').contentDocument || $('edit').contentWindow.document; 
    editor.designMode='on'; 
}  
La variable editor la define previamente y sería el identificador de la frame edtable.
Estuve experimentando pero me falla (me envia el mensaje con el 'nop').
Me parece que es porque no estoy adaptando bien la variable editor a mi frame editable (Le puse el id de mi frame e intenté tambien otras cosas pero nada...).
¿Alguien me podría ayudar?

Última edición por FacundoJavier3500; 11/07/2010 a las 09:46
  #4 (permalink)  
Antiguo 11/07/2010, 09:42
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 5 meses
Puntos: 0
Información Respuesta: Insertar txt en donde esta el cursor

ah! casi me olvido
La forma en que acceso a mi frame editable para agregar el valor al final es la siguiente:
Código Javascript:
Ver original
  1. function insertavalor(valor){
  2. document.frames("textEdit").document.body.innerHTML = document.frames("textEdit").document.body.innerHTML + valor;
  3. }
También, experimentando, pude accesar a la frame de esta forma (reemplaza todo su contenido por el valor a insertar).
Código Javascript:
Ver original
  1. function insertavalor2(valor){
  2. var s=textEdit.document.body.createTextRange();
  3.                 s.pasteHTML(valor);
  4. }
Alguna idea?

Última edición por FacundoJavier3500; 11/07/2010 a las 09:50
  #5 (permalink)  
Antiguo 11/07/2010, 13:57
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Insertar txt en donde esta el cursor

Hola

Respondiendo al código de @Panino que estás usando, si lo que quieres es insertar smiles directamente, es decir sin usar la venta promt, las función sería algo como esto
Código Javascript:
Ver original
  1. function funcion(sm){
  2. var url
  3. url = 'smiles/'+sm+'.gif';
  4. editor.execCommand("InsertImage",false,url);
  5. }
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 11/07/2010, 23:19
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 5 meses
Puntos: 0
Mensaje Respuesta: Insertar txt en donde esta el cursor

Adler, gracias por tu respuesta.
Lo que yo quiero es insertar texto (por ejemplo ":P" ), al que despues yo reemplazo por imágenes.
El problema es que no se como sería la sintaxis para acceder a mi frame editable (probé la que me da el ejemplo poniendo el id de mi frame pero me da error).
O sea, el problema es que no sé cómo definir la variable editor correctamente (por ejemplo para ejecutar "editor.execCommand(a,b,c);" ), de forma que acceda a mi frame.
Las formas en que pude acceder a mi frame editable son:
Cita:
Para agregar el valor a insertar al final de la frame:
Código:
function insertavalor(valor){ 
document.frames("textEdit").document.body.innerHTML=document.frames("textEdit").document.body.innerHTML+valor;
} 
Y para reemplazar todo el contenido de la frame por el valor a insertar:
Código:
function insertavalor2(valor){ 
var s=textEdit.document.body.createTextRange(); 
s.pasteHTML(valor); 
} 
Pero yo quiero que el valor se inserte en donde tengo el cursor .
  #7 (permalink)  
Antiguo 12/07/2010, 04:53
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Insertar txt en donde esta el cursor

Hola

Entonces sería así
Código Javascript:
Ver original
  1. function funcion(sm){
  2.     editor.execCommand("inserthtml",false,sm);
  3. }
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 12/07/2010, 11:05
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Insertar txt en donde esta el cursor

Exactamente Adler, esa función es la ideal para lo que yo quiero hacer.
Pero ahora falta la definicion correcta de la variable editor.
En el código de ejemplo sería así (cambiando edit por textEdit, que es el id de mi frame):
Código Javascript:
Ver original
  1. var editor;
  2. function $(id){
  3.     return document.getElementById(id);
  4. }
  5. function funcion(sm){
  6. editor.execCommand("inserthtml",false,sm);
  7. }
  8. window.onload=function(){    
  9.     editor=$('textEdit').contentDocument || $('textEdit').contentWindow.document;
  10.     editor.designMode='on';
  11. }
Pero el problema es que cuando llamo a la función 'funcion' me da un error en la página. La función en sí está bien definida y debería funcionar, pero me parece que lo que no está funcionando bien es la variable editor, porque creo que no está 'señalando' a mi frame correctamente.
La variable editor sería netamente:
editor=document.getElementById('textEdit').content Document || document.getElementById('textEdit').contentWindow. document;
Probé algunas otras maneras de definirla (por ejemplo cambiando getElementById('textEdit') por frames("textEdit") ) pero no me ha resultado.
En mensajes anteriores puse parte del código que accesó de forma correcta a la frame editable así puedan ayudarme.
A alguien se le ocurre alguna manera?

Última edición por FacundoJavier3500; 14/07/2010 a las 12:56
  #9 (permalink)  
Antiguo 14/07/2010, 13:04
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Insertar txt en donde esta el cursor

¿a nadie?
  #10 (permalink)  
Antiguo 14/07/2010, 13:13
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Insertar txt en donde esta el cursor

Hola

Releyendo, el problema no está en la variable editor, sino que estás intentando insertar HTML y es lo que no se está haciendo. El caso que no veo el objeto para insertar un BBCODE cuando el editor es WYSIWYG

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Etiquetas: agregar_valor, execcommand, frames
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 08:41.