Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Eliminar tags html

Estas en el tema de Eliminar tags html en el foro de Javascript en Foros del Web. Por que al usar replace sobre un string que contiene html no me lo elimina? Concretamente intento dejar un texto limpio de tags, el texto ...
  #1 (permalink)  
Antiguo 28/03/2011, 14:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Eliminar tags html

Por que al usar replace sobre un string que contiene html no me lo elimina?

Concretamente intento dejar un texto limpio de tags, el texto proviene de innerHTML de un span... la funcion que uso es la siguiente, solo actua sobre unos tag y una entitie concreta que és lo unico que puede haber en el texto que le paso

html=

Ref.:<strong></strong><br>
Lugar y Año:&nbsp;<strong></strong><br>
Tipo:&nbsp;<strong>revista</strong><br>
Fotocópia:&nbsp;<strong>Si</strong><br>
Donación:&nbsp;<strong>XXX</strong><br>
Sección:&nbsp;<strong>VAR</strong>&nbsp;Orden:&nbsp;<strong>7</strong><br>
Carpeta:&nbsp;<strong>YYYYYYYYY</strong><br>
Núm. Carpeta:&nbsp;<strong>0</strong><br>



Código Javascript:
Ver original
  1. function htmltotxt(html){
  2.     txt=html.replace("&nbsp;"," ");
  3.     txt=txt.replace("<strong>","");
  4.     txt=txt.replace("</strong>","");
  5.     txt=txt.replace("<br>","\n");
  6.     return txt;
  7. }

el problema es que solo elimina los de la primera fila

return

Ref.:

Lugar y Año:&nbsp;<strong></strong><br>
Tipo:&nbsp;<strong>revista</strong><br>
Fotocópia:&nbsp;<strong>Si</strong><br>
Donación:&nbsp;<strong>XXX</strong><br>
Sección:&nbsp;<strong>VAR</strong>&nbsp;Orden:&nbsp;<strong>7</strong><br>
Carpeta:&nbsp;<strong>YYYYYYYYY</strong><br>
Núm. Carpeta:&nbsp;<strong>0</strong><br>

Por que?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #2 (permalink)  
Antiguo 28/03/2011, 14:21
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Eliminar tags html

<[^>]+> es una expresión regular que elimina todos los tag html y usa el flag g (global)
  #3 (permalink)  
Antiguo 28/03/2011, 14:22
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Eliminar tags html

Para que reemplace todas las ocurrencias tendrías que usar el flag g: https://developer.mozilla.org/en/Jav...Objects/regexp
Edito: me choqué con Isabel ;)
  #4 (permalink)  
Antiguo 29/03/2011, 00:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Eliminar tags html

Muchas gracias a los dos.... regular expressions mi eterna asignatura pendiente....

Ya puestos a pedir cual es la alternativa a \n para IE?

re=new RegExp("<br>","g");
txt=txt.replace(re,"\n");

mantiene los saltos de linea en FF pero no en IE...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 29/03/2011 a las 01:52
  #5 (permalink)  
Antiguo 29/03/2011, 02:38
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Eliminar tags html

Que tal quimfv,

Si obtenes el texto a partir de un element, no te sirve utilizar innerText sobre el element ?
Código Javascript:
Ver original
  1. var el = document.getElementById('node');
  2. var cleanText = el.innerText || el.textContent;

en firefox la propiedad es textContent, te dejo la tabla de compatibilidad, o si queres hacerlo mas fancy, podes hacer algo asi:

Código Javascript:
Ver original
  1. if (Browser.isFirefox) {  
  2.     HTMLElement.prototype.__defineGetter__("innerText",function () { return(this.textContent); });  
  3.     HTMLElement.prototype.__defineSetter__("innerText", function (text) { this.textContent = text; });
  4. }

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 29/03/2011, 03:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Eliminar tags html

Genial masterpuppet!!!

La idea es para copiar al porta papeles citas o referencias de unos documentos listados en una tabla, y poder pegarlos a otro documento...

Finalmente puede quedar así, para quien pueda usarlo...


Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. <script language="JavaScript" type="text/JavaScript">
  5.  
  6. function htmltotxt2(id){
  7. var el = document.getElementById(id);
  8. var txt = el.innerText || el.textContent;
  9. document.getElementById("info2").innerHTML=txt;
  10. copy_clip(txt);
  11. }
  12.  
  13. function copy_clip(meintext)
  14. {
  15. if (window.clipboardData)
  16.     {
  17.  
  18.     // the IE-manier
  19.    window.clipboardData.setData("Text", meintext);
  20.  
  21.    // waarschijnlijk niet de beste manier om Moz/NS te detecteren;
  22.    // het is mij echter onbekend vanaf welke versie dit precies werkt:
  23.    }
  24.    else if (window.netscape)
  25.    {
  26.  
  27.    // dit is belangrijk maar staat nergens duidelijk vermeld:
  28.    // you have to sign the code to enable this, or see notes below
  29.    netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
  30.  
  31.    // maak een interface naar het clipboard
  32.    var clip = Components.classes['@mozilla.org/widget/clipboard;1']
  33.        .createInstance(Components.interfaces.nsIClipboard);
  34.    if (!clip) return;
  35.  
  36.    // maak een transferable
  37.    var trans = Components.classes['@mozilla.org/widget/transferable;1']
  38.        .createInstance(Components.interfaces.nsITransferable);
  39.    if (!trans) return;
  40.  
  41.    // specificeer wat voor soort data we op willen halen; text in dit geval
  42.    trans.addDataFlavor('text/unicode');
  43.  
  44.    // om de data uit de transferable te halen hebben we 2 nieuwe objecten
  45.    // nodig om het in op te slaan
  46.    var str = new Object();
  47.    var len = new Object();
  48.  
  49.    var str = Components.classes["@mozilla.org/supports-string;1"]
  50.        .createInstance(Components.interfaces.nsISupportsString);
  51.  
  52.    var copytext=meintext;
  53.  
  54.    str.data=copytext;
  55.  
  56.    trans.setTransferData("text/unicode",str,copytext.length*2);
  57.  
  58.    var clipid=Components.interfaces.nsIClipboard;
  59.  
  60.    if (!clip) return false;
  61.  
  62.    clip.setData(trans,null,clipid.kGlobalClipboard);
  63.  
  64.    }
  65.    alert("Following info was copied to your clipboard:\n\n" + meintext);
  66.    return false;
  67. }
  68.  
  69. </head>
  70. <span id="info">Ref.:<strong></strong><br>
  71. Lugar y Año:&nbsp;<strong></strong><br>
  72. Tipo:&nbsp;<strong>revista</strong><br>
  73. Fotoc&oacute;pia:&nbsp;<strong>Si</strong><br>
  74. Donaci&oacute;n:&nbsp;<strong>XXX</strong><br>
  75. Secci&oacute;n:&nbsp;<strong>VAR</strong>&nbsp;Orden:&nbsp;<strong>7</strong><br>
  76. Carpeta:&nbsp;<strong>YYYYYYYYY</strong><br>
  77. Núm. Carpeta:&nbsp;<strong>0</strong><br></span>
  78. <input name="bot" type="button" id="bot" onClick="htmltotxt2('info')">
  79. <span id="info2"></span>
  80. </body>
  81. </html>

copy_clip la encontre aquí, gracias tambien a ellos.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 29/03/2011, 09:15
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
Respuesta: Eliminar tags html

Ese script de copiar funciona en Firefox e Internet e explorer.... si recuerdas que hay otros... por ejemplo Chrome que lo utiliza un 24% de todos los usuarios (w3school stadistics) ?

O sea que aprox. 1 de cada 4 usuarios no les va a servir tu script... aqui hay una solucion para (casi) todas las plataformas:

http://beckelman.net/post/2009/01/22...nd-jQuery.aspx

Aunque te comento que usa el MALVADO Adobe Flash! ... lol
  #8 (permalink)  
Antiguo 30/03/2011, 01:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Eliminar tags html

En que versión no funciona, he probado con las versiones que tengo instaladas de IE,FF,Chrome y Safari y funciona en todas...

Edito: Corrijo acabo de descubrir en el trabajo que con FF4.0 y W2k no funciona ... con FF4.0 y Xp si funciona.... investigare soluciones.

Hay que configurar el FF para que lo permita... http://www.krikkit.net/howtos/13-how...avascript.html
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 30/03/2011 a las 03:27

Etiquetas: html, tags
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 18:15.