Foros del Web » Programando para Internet » Javascript »

Imposible resaltar texto en iframe NO EDITABLE

Estas en el tema de Imposible resaltar texto en iframe NO EDITABLE en el foro de Javascript en Foros del Web. Hola a tod@s, Me gustaría hacer una página en la cual tengo un texto NO EDITABLE y que el usuario pueda resaltar en amarillo algunas ...
  #1 (permalink)  
Antiguo 19/10/2011, 09:52
Eux
 
Fecha de Ingreso: octubre-2010
Mensajes: 60
Antigüedad: 13 años, 6 meses
Puntos: 0
Imposible resaltar texto en iframe NO EDITABLE

Hola a tod@s,

Me gustaría hacer una página en la cual tengo un texto NO EDITABLE y que el usuario pueda resaltar en amarillo algunas partes del texto.

Al principio lo quise hacer con un DIV pero tuve el mismo problema que tengo ahora mismo con iframe, y es que no soy capaz de poner el texto NO EDITABLE dado que eso hace que entonces no se pueda resaltar en amarillo.

Una de las soluciones que pensé que funcionaría seguro era hacerle lo siguiente a la funcion colorFondo:


function colorFondo(c){
editor.designMode='on';
var h = window.ActiveXObject?'backcolor':'hilitecolor';
editor.execCommand(h,false,c);
editor.designMode='off';
}

pues mi gozo en un pozo ya que esa solución sólo me valió para OPERA

Aquí os dejo el código entero por si alguien podría echarme una mano y hacer alguna prueba, o quizás le sirva para algún proyecto.

Código Javascript:
Ver original
  1. <script>
  2.  
  3. var editor;
  4.  
  5. function $(id){
  6.     return document.getElementById(id);
  7. }
  8.  
  9. function colorFondo(c){
  10.     var h = window.ActiveXObject?'backcolor':'hilitecolor';
  11.     editor.execCommand(h,false,c);
  12. }
  13.  
  14.  
  15. window.onload=function(){    
  16.     editor=$('edit').contentDocument || $('edit').contentWindow.document;    
  17.     editor.designMode='on';
  18. }
  19.  
  20. function formato(f){   
  21.     editor.execCommand(f, false, null);
  22. }
  23.  
  24. </script>  
  25. </head>
  26.  
  27. <body>
  28.  
  29.  
  30.  
  31. <form id="form1" name="form1" method="post" action="">
  32.  
  33.   <iframe src="texto.html" id="edit" width="100%" height="300" style=" border:1px solid #000;" ></iframe>
  34.  
  35.   <input type="button" name="Submit1" value="Resaltar" onclick="colorFondo('yellow');" />
  36.   <input type="button" name="Submit2" value="Deshacer" onclick="formato('undo')" />
  37.   <input type="button" name="Submit3" value="Rehacer" onclick="formato('redo')" />
  38.  
  39. </form>
  40.  
  41. <br /><br />
  42.  
  43. <input type="button" value="Ver HTML" onclick="alert(editor.body.innerHTML)">
  44.  
  45.  
  46. </body>
  47. </html>

Gracias de antemano.
  #2 (permalink)  
Antiguo 20/10/2011, 03:28
Eux
 
Fecha de Ingreso: octubre-2010
Mensajes: 60
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Imposible resaltar texto en iframe NO EDITABLE

Me acabo de dar cuenta que IE no necesita que se le habilite modo diseño para que funcione la función COLOREAR, de esta manera ya funciona:

Código Javascript:
Ver original
  1. function colorFondo(c){
  2.     var h = window.ActiveXObject?'backcolor':'hilitecolor';
  3.     editor.execCommand(h,false,c);
  4. }

pero claro, de esta manera tampoco soluciono nada ya que solo va en IE :S:S:S:S

Última edición por Eux; 20/10/2011 a las 03:29 Razón: mejorar la explicación
  #3 (permalink)  
Antiguo 24/10/2011, 09:20
Eux
 
Fecha de Ingreso: octubre-2010
Mensajes: 60
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Imposible resaltar texto en iframe NO EDITABLE

Al final he dado un cambio de rumbo ya que he encontrado una librería que se llama Rangy que ya hace todo el trabajo, os dejo la url por si alguien le interesa este tema aquí hay un ejemplo de cómo funciona [URL="http://rangy.googlecode.com/svn/trunk/demos/highlighter.html"]http://rangy.googlecode.com/svn/trunk/demos/highlighter.html[/URL]

También hay más información [URL="http://rangy.googlecode.com"]http://rangy.googlecode.com[/URL]

Etiquetas: editable, funcion, html, iframe, imposible, resaltar
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 21:08.