Foros del Web » Programando para Internet » Javascript »

Problemas creando mi editor HTML - WYSIWYG

Estas en el tema de Problemas creando mi editor HTML - WYSIWYG en el foro de Javascript en Foros del Web. Bueno, les explico mis primeras pruebas para construir un editor visual de html y dónde me he "atascado". En primer lugar está la página blank.html ...
  #1 (permalink)  
Antiguo 27/09/2007, 02:54
Avatar de Jandroide  
Fecha de Ingreso: marzo-2004
Mensajes: 96
Antigüedad: 20 años, 1 mes
Puntos: 1
Problemas creando mi editor HTML - WYSIWYG

Bueno, les explico mis primeras pruebas para construir un editor visual de html y dónde me he "atascado".

En primer lugar está la página blank.html, que es donde se escribirá:

Código HTML:
<html>
<head><title></title></head>
<body contenteditable onLoad="document.designMode = 'on'">
</body>
</html> 
Y luego la página editor.html, que contiene el script del editor:

Código HTML:
<iframe src="blank.html" id="areaEditable" style="width:500px; height: 300px; border-style:inset; border-width:thin;" frameborder="0px"></iframe><br>
<input type="button" value="Ver contenido" onClick="javascript:alert( verContenido() );" />
<input type="button" value="Ver selección" onClick="javascript:alert( verSeleccion() );" />

<script language="JavaScript" type="text/JavaScript">

	function verContenido() {
		//Para IExplorer
		if (window["areaEditable"]){
			return window["areaEditable"].document.body.innerHTML;
		//Para Mozilla
		}else{
			return document.getElementById("areaEditable").contentWindow.document.body.innerHTML;
		}
	}
	
	function verSeleccion(){
		//Para IExplorer
		if(typeof document.selection != 'undefined' && document.selection) {
			return window["areaEditable"].document.selection.createRange().text;
		}
		//Para Mozilla
		else if(document.getElementById("areaEditable").selectionStart != 'undefined'){
			var start = document.getElementById("areaEditable").selectionStart;
			var end = document.getElementById("areaEditable").selectionEnd;
			return document.getElementById("areaEditable").substring(start, end);
		}
	}
	
</script> 
Si prueban el código en IExplorer y en Mozilla, verán que el primer botón sirve para mostrar todo el texto que se haya escrito, eso funciona bien.

El problema está en el segundo botón, que en IExplorer muestra el texto seleccionado por el usuario, pero en Mozilla no logro hacerlo funcionar...seguro que se trata de una tontería, ¿alguna solución?
  #2 (permalink)  
Antiguo 27/09/2007, 03:39
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 5 meses
Puntos: 9
Re: Problemas creando mi editor HTML - WYSIWYG

Bueno, no he probado tu código pero creo que tu problema es el que tuve yo hace poco... El IExplore no detecta la selección del campo. Pues yo encontré por ahí este código (el parámetro "editor" en mi caso es un TEXTAREA), una vez ejecutado ya se les ha asignadao valor a selectionStar y selectionEnd y se puede ejecutar tu código anterior como si fuera mozilla, que ahora si reconocerá estas propiedades:

Código:
    function AveriguaRangoIE(editor)
    {
        if (document.selection)
        { // Esta mierda es necesaria para averiguar
          //las posiciones de inicio y fin de seleccion en IExplore
            // We'll use this as a 'dummy'
            var range = document.selection.createRange();

            if ((range != null) && (range.htmlText.length > 0))
            {  //Si habia seleccion => range.htmlText.length > 0
                var stored_range = range.duplicate(); // Select all text
                stored_range.moveToElementText( editor ); // Now move 'dummy' end point to end point of original range
                stored_range.setEndPoint( 'EndToEnd', range ); // Now we can calculate start and end points
                editor.selectionStart = stored_range.text.length - range.text.length;
                editor.selectionEnd = editor.selectionStart + range.text.length;
                alert('Comienzo ' + editor.selectionStart);
                alert('Fin ' + editor.selectionEnd);
            }
            else
            {
                alert('No hay rango');
                //js_getCursorPosition(editor);
            }
            return;
        }
    }
Mi problema es cuando no hay ningún texto seleccionado, con el IExplore no soy capaz de averiguar la posicion del cursor y de volver a colocarlo después en el mismo sitio, he visto por ahí funciones para hacerlo pero son muy complicadas y no consigo adaptarlas a mi editor...

¿Tu sabes como hacerlo?

Por cierto, he dejado los alert en el código, puedes quitarlos cuando lo tengas probado..
  #3 (permalink)  
Antiguo 27/09/2007, 09:50
Avatar de Jandroide  
Fecha de Ingreso: marzo-2004
Mensajes: 96
Antigüedad: 20 años, 1 mes
Puntos: 1
Re: Problemas creando mi editor HTML - WYSIWYG

Yo donde tengo el problema con mi script es en Mozilla, en IE funciona perfectamente. La cuestión es que yo no utilizo un TEXTAREA, sino una página metida en un iframe.

EIDTO: ya lo tengo, os pongo el código corregido por si le interesa a alguien. Como veréis, sólo ha cambiado una pequeña cosa.

Código HTML:
<iframe src="blank.html" id="areaEditable" style="width:500px; height: 300px; border-style:inset; border-width:thin;" frameborder="0px"></iframe><br>
<input type="button" value="Ver contenido" onClick="javascript:alert( verContenido() );" />
<input type="button" value="Ver selección" onClick="javascript:alert( verSeleccion() );" />

<script language="JavaScript" type="text/JavaScript">

	function verContenido() {
		//Para IExplorer
		if (window["areaEditable"]){
			return window["areaEditable"].document.body.innerHTML;
		//Para Mozilla
		}else{
			return document.getElementById("areaEditable").contentWindow.document.body.innerHTML;
		}
	}
	
	function verSeleccion(){
		//Para IExplorer
		if(typeof document.selection != 'undefined' && document.selection) {
			return window["areaEditable"].document.selection.createRange().text;
		}
		//Para Mozilla
		else if(document.getElementById("areaEditable").selectionStart != 'undefined'){
			return document.getElementById("areaEditable").contentWindow.getSelection();
		}
	}
	
</script> 

Última edición por Jandroide; 28/09/2007 a las 09:08
  #4 (permalink)  
Antiguo 12/08/2009, 09:16
Avatar de Koke_Infortecnica  
Fecha de Ingreso: agosto-2009
Mensajes: 23
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Re: Problemas creando mi editor HTML - WYSIWYG

Cita:
Mi problema es cuando no hay ningún texto seleccionado, con el IExplore no soy capaz de averiguar la posicion del cursor y de volver a colocarlo después en el mismo sitio, he visto por ahí funciones para hacerlo pero son muy complicadas y no consigo adaptarlas a mi editor...

Oye si has conseguido como hacerlo, podrias decir como lo has hecho es que yo ni he encontrado esas funciones. Que me estoy volviendo loco para hacerlo
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 22:59.