Foros del Web » Programando para Internet » Javascript »

caretPos y createTextRange

Estas en el tema de caretPos y createTextRange en el foro de Javascript en Foros del Web. Chicos tengo un problema stoy haciendo un editor para una plataforma de ayuda a la docencia que estamos haciendo (proximamente GPL) y tengo problemas con ...
  #1 (permalink)  
Antiguo 01/08/2006, 10:08
Avatar de [HH]KaoS  
Fecha de Ingreso: diciembre-2004
Ubicación: Nerja, Málaga (España)
Mensajes: 216
Antigüedad: 19 años, 4 meses
Puntos: 6
caretPos y createTextRange

Chicos tengo un problema stoy haciendo un editor para una plataforma de ayuda a la docencia que estamos haciendo (proximamente GPL) y tengo problemas con Javascript, estoy intentando conseguir dos cosas.

Que al insertar una etiqueta me la inserte donde está situado el cursor, y que si no hay una selección a la que añadir la etiqueta, por ej-> <b>inserte el texto en negrita aquí</b> que el texto "inserte el texto en negrita aquí" quede seleccionado.

Mi problema es que no comprendo bien el funcionamiento del caretPos y createTextRange. Ambos me devuelven undefined aún estando alguna zona seleccionado y juraría que los nombres están correctos. les dejo aquí parte del codigo.

Formulario
Código:
<form action="" method="post" name="editor" onsubmit="return checkForm(this)" id="editor">
.....
<textarea 
        name="message" 
        id="message" 
        cols="35" 
        rows="15" 
        wrap="VIRTUAL"
        style="width:359px" 
        tabindex="3" 
        onselect ="storeCaret(this);" 
	onclick ="storeCaret(this);" 
	onkeyup ="storeCaret(this);"
	onchange ="storeCaret(this);" 
	><?php if(isset($message) && strcmp($op,"prev")==0) echo $message;?>
</textarea>
Funcion storecaret
Código:
// Remember the current position.
function storeCaret(textEl) {
	// Only bother if it will be useful.
	if (typeof(textEl.createTextRange) != 'undefined')
		text.caretPos = document.selection.createRange().duplicate();
}
Función meter (la cogí de un ejemplo de este foro)
Código:
function meter(text) 
{
		          //documento.nombre_formulario.nombre_campo
	var postopic = document.editor.message;
	if (postopic.createTextRange && postopic.caretPos) 
	{
		var caretPos= postopic.caretPos;      
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? 
		
		text + ' ' : text;
	}
	else 
		postopic.value += text;
	postopic.focus(caretPos)
	

}
El resto de la información se la dejo aquí por si quieren descargarse el ejemplo completo:
Plataforma que estamos desarollando: https://swad.ugr.es
Editor en pruebas: http://quickwebdeluxe.com/editor/editor.php
Archivo JS: http://quickwebdeluxe.com/editor/funciones_editor.js

Un saludo y gracias por adelantado.
Raúl
__________________
Más información sobre mi: Raúl Jiménez
  #2 (permalink)  
Antiguo 01/08/2006, 10:50
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Tal vez te sirva el código de un editor que hice: Ejemplo básico de edición

Me parece que con los textrange en mozilla no funciona.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 01/08/2006, 11:07
Avatar de [HH]KaoS  
Fecha de Ingreso: diciembre-2004
Ubicación: Nerja, Málaga (España)
Mensajes: 216
Antigüedad: 19 años, 4 meses
Puntos: 6
Muchas gracias! voy a ver q pasa :)
__________________
Más información sobre mi: Raúl Jiménez
  #4 (permalink)  
Antiguo 01/08/2006, 15:15
Avatar de [HH]KaoS  
Fecha de Ingreso: diciembre-2004
Ubicación: Nerja, Málaga (España)
Mensajes: 216
Antigüedad: 19 años, 4 meses
Puntos: 6
Mil gracias caricatos, ya he solucionado los problemas más urgentes, creo que pocas mejoras más le haremos :) (por cierto no conocia lo del fieldset, esta curioso ;))

Gracias de nuevo.
http://quickwebdeluxe.com/editor/editor.php
__________________
Más información sobre mi: Raúl Jiménez
  #5 (permalink)  
Antiguo 02/08/2006, 01:51
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Veo que eres vecino de Málaga como yo , se ve interesante el editor, pero a veces se produce error si el textarea no tiene el foco.

Hace unos años, tuvimos en estos foros un proyecto que me recuerda el tuyo, y el resultado lo puedes ver en este enlace: Generador de Fórmulas Matemáticas

De paso te comento que las letras griegas también pueden ser mayúsculas capitalizando la letra en cuestión: &alpha; y &Alpha;

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 02/08/2006, 10:11
Avatar de [HH]KaoS  
Fecha de Ingreso: diciembre-2004
Ubicación: Nerja, Málaga (España)
Mensajes: 216
Antigüedad: 19 años, 4 meses
Puntos: 6
Muchas gracias vecino ;). Le voy a exar un vistazo.
¿Alguna idea para arreglar lo del foco?, es que en javascript estoy algo pegado aún :)
__________________
Más información sobre mi: Raúl Jiménez
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 03:17.