Foros del Web » Programando para Internet » Javascript »

buscar texto en una pagina web

Estas en el tema de buscar texto en una pagina web en el foro de Javascript en Foros del Web. hola a todos..el asunto es este, mi cliente quiere un buscador de texto en su web... quiere ( no se donde lo vio ) que ...
  #1 (permalink)  
Antiguo 16/07/2010, 12:27
 
Fecha de Ingreso: julio-2010
Mensajes: 62
Antigüedad: 13 años, 9 meses
Puntos: 0
buscar texto en una pagina web

hola a todos..el asunto es este, mi cliente quiere un buscador de texto en su web...
quiere ( no se donde lo vio ) que en una caja de texto se ponga una palabra y se destaque esa palabra en la pagina si coincide la respuesta..
la cosa es q busque un kilo y encontre este codigo:



----------------------------------------------------------------------------------------------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento sin título</title>
</head>
<!-- Inicia el Buscador ---- Blaizer-->
<SCRIPT language=JavaScript>
var NS4 = (document.layers);
var IE4 = (document.all);
var win = window;
var n = 0;
function findInPage(str) {
var txt, i, found;
if (str == "")
return false;
if (NS4) {
if (!win.find(str))
while(win.find(str, false, true))
n++;
else
n++;
if (n == 0)
alert("Not found.");
}
if (IE4) {
txt = win.document.body.createTextRange();
for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character", 1);
txt.moveEnd("textedit");
}
if (found) {
txt.moveStart("character", -1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}
else {
if (n > 0) {
n = 0;
findInPage(str);
}
else
alert("Su busqueda no produjo, ningun resultado. Intente con otro");
}
}
return false;
}
</SCRIPT>

<FORM name=search onsubmit="return findInPage(this.string.value);">
<P align=center><FONT size=3>
<INPUT
style="BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; FONT-SIZE: 8pt; BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid"
onchange="n = 0;" size=16 name=string></FONT><BR><INPUT style="BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; FONT-SIZE: 8pt; BORDER-LEFT: #ffffff 1px solid; BORDER-BOTTOM: #ffffff 1px solid; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #aaaaaa" type=submit value=Search in page ><center><font size=2pt;><font family=Times New Roman;><b>

<BR>
</P></FORM></DIV><BR><!-- Final Buscador-->
<body>
</body>
</html>

-----------------------------------------------------------------------------------------------------------------------------------------------------------------
PD: Como modifico el codigo para que sea leido en (Iexplorer -Firefox-Safari) o al menos en los exploradores mas usados?

el asunto es q no puedo encadenar el div con las palabras a buscar...
ejemplo la pagina contiene las siguientes palabras...
IVA
DESCUENTO
ENVIO
y esas palabras deberian resaltarse en color , o este codigo esta incorrecto?

alguna idea por aqui?!?!
gracias de antemano!
  #2 (permalink)  
Antiguo 16/07/2010, 12:48
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: buscar texto en una pagina web

Hola, bienvenido

Supongo que te refieres a algo como el Contrl + F de FF
Código Javascript:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html xmlns="http://www.w3.org/1999/xhtml"lang="es" xml:lang="es">
  3. <head>
  4. <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
  5. <script type="text/javascript">
  6. var vuelta = 0;
  7. var cadena = ""
  8. var len = 0;
  9. function Resaltar(c,ev) {
  10. var largo_cadena = len;
  11. var keyCode = document.layers ? ev.which : document.all ? event.keyCode : document.getElementById ? ev.keyCode : 0;
  12.    
  13.     if (keyCode == 8) vuelta--;
  14.         if (vuelta < 1) {
  15.                 //cadena += document.getElementById("texto").firstChild.nodeValue;
  16.         cadena += document.getElementById("texto").innerHTML;
  17.      }
  18.  
  19. var largo2_cadena = cadena.length
  20.  
  21.     if (largo2_cadena >= largo_cadena) {len = largo_cadena;}
  22.     if (largo_cadena == 0) {len = largo2_cadena;}
  23.  
  24. var rg = new RegExp(c,"g");
  25.  
  26.         if (rg.exec(cadena.substr(0,parseInt(len))) != null) {
  27.             var marca = cadena.substr(0,parseInt(len)).replace(rg, "<span style=\"background-color:#9ACD32;color:#FFFFFF;\">" + c + "</span>");
  28.                 document.getElementById("texto").innerHTML = marca;
  29.         document.getElementById("terminos").style.border = "solid #9ACD32 1px";
  30.         } else {
  31.         document.getElementById("texto").innerHTML = cadena;
  32.         document.getElementById("terminos").style.border = "solid #FF0000 1px";
  33. }
  34. vuelta++;
  35. }
  36. </script>
  37. </head>
  38. <body>
  39. <div id="texto">Esto es una prueba para resaltar caracteres o palabras de este texto prueba</div>
  40. <form method="" action="" name="" autocomplete="off">
  41. <input type="text" value="" id="terminos" onkeyup="Resaltar(this.value,event);" />
  42. </form>
  43. </body>
  44. </html>
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;" />
  #3 (permalink)  
Antiguo 16/07/2010, 13:11
 
Fecha de Ingreso: julio-2010
Mensajes: 62
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: buscar texto en una pagina web

gracias por la bienvenida
lo probare y te digo ... ojala me resulte.... gracias
  #4 (permalink)  
Antiguo 16/07/2010, 13:19
 
Fecha de Ingreso: julio-2010
Mensajes: 62
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: buscar texto en una pagina web

funciona de maravilla... pero... lo que aparece en el div : "Esto es una prueba para resaltar caracteres o palabras de este texto prueba" se puede ocultar?
sabes, lo que pasa es que la idea de esto es que el visitante pueda buscar dentro de la pagina palabras como:
precio
iba
costos
descuentos... etc...
me entiendes?
porque si el texto esta a la vista poco me resulta..
como bien dijiste la idea es que sea un equivalente a CTRL + F
  #5 (permalink)  
Antiguo 16/07/2010, 14:48
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: buscar texto en una pagina web

Hola

Puedes quitar el texto del div, pero ten cuenta que ese código tiene limitaciones: La cadena sobre la que se va a buscar coincidencias ha de estar dentro de ese u otro div. Solo se podrán resaltar una letra, una palabra o una frase, es decir, si quieres que se resalten los términos "prueba resaltar" no funcionará. En cambio si funcionará "prueba para resaltar"

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 16/07/2010, 16:27
 
Fecha de Ingreso: julio-2010
Mensajes: 62
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: buscar texto en una pagina web

hola... claro entiendo lo que dices pero entonces como localizo las palabras a resaltar? me explico?... me gana este codigo la verdad ...
si elimino se div en particular... como hare entonces para localizar las palabras dentro de la web?
  #7 (permalink)  
Antiguo 16/07/2010, 18:47
 
Fecha de Ingreso: julio-2010
Mensajes: 62
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: buscar texto en una pagina web

Adler.... ayuda XD
  #8 (permalink)  
Antiguo 17/07/2010, 04:39
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: buscar texto en una pagina web

Hola

Cita:
Iniciado por Mtf006 Ver Mensaje
Adler.... ayuda XD
Aquí en España eran la 2:47 am, así que estaba yo como dar ayuda

Puedes usar document.body.innerHTML, pero verás que risa cuando encaje con un tag HTML

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;" />
  #9 (permalink)  
Antiguo 17/07/2010, 14:14
 
Fecha de Ingreso: julio-2010
Mensajes: 62
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: buscar texto en una pagina web

Oh!! Adler me mataste... en fin vere que puedo hacer creo que poco en todo caso en fin te molestare si no me resulta jajaja ... gracias de todas formas
  #10 (permalink)  
Antiguo 17/07/2010, 14:32
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: buscar texto en una pagina web

Hola

Te he optimizado el js, así que usa este. También te he montado un caso para que veas a lo que me refiero. Guarda el código con extension .php y escribe en el textfield una "s"

Código Javascript:
Ver original
  1. <?php
  2. $url = file_get_contents('http://www.monografias.com/trabajos5/asp/asp.shtml', true);
  3. $codigo =  $url;
  4. ?>
  5.  
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  7. <html xmlns="http://www.w3.org/1999/xhtml"lang="es" xml:lang="es">
  8. <head>
  9. <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
  10. <script type="text/javascript">
  11. var vuelta = 0;
  12. var cadena = '';
  13. var len = 0;
  14. function Resaltar(c,ev) {
  15. var caracteresInput = c.length;
  16. var largo_cadena = len;
  17. var keyCode = document.layers ? ev.which : document.all ? event.keyCode : document.getElementById ? ev.keyCode : 0;
  18.    
  19.     if (keyCode == 8) vuelta--;
  20.         if (vuelta < 1) {
  21.                 //cadena += document.getElementById('texto').firstChild.nodeValue;
  22.         cadena = document.getElementById('texto').innerHTML;
  23.         var largo2_cadena = cadena.length
  24.  
  25.         if (largo2_cadena >= largo_cadena) {len = largo_cadena;}
  26.         if (largo_cadena == 0) {len = largo2_cadena;}
  27.         }
  28.  
  29.  
  30.  
  31.     if (caracteresInput == 0) {
  32.         document.getElementById('texto').innerHTML = cadena;
  33.         document.getElementById('terminos').style.border = '';
  34.     } else {
  35.  
  36. var rg = new RegExp(c,"g");
  37.  
  38.             if (rg.exec(cadena.substr(0,parseInt(len))) != null) {
  39.                 var marca = cadena.substr(0,parseInt(len)).replace(rg, '<span style=\"background-color:#9ACD32;color:#FFFFFF;\">' + c + '</span>');
  40.                     document.getElementById('texto').innerHTML = marca;
  41.             document.getElementById('terminos').style.border = 'solid #9ACD32 1px';
  42.             } else {
  43.             document.getElementById('texto').innerHTML = cadena;
  44.             document.getElementById('terminos').style.border = 'solid #FF0000 1px';
  45.         }
  46. vuelta++;
  47.     }
  48.  
  49. }
  50. </script>
  51. </head>
  52. <body>
  53. <form method="post" action="" name="" autocomplete="off">
  54. Buscar Terminos: <input type="text" value="" id="terminos" onkeyup="Resaltar(this.value,event);" />
  55. <div id="texto"><?php echo $codigo;?></div>
  56. </form>
  57. </body>
  58. </html>

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;" />
  #11 (permalink)  
Antiguo 18/07/2010, 10:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 16
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: buscar texto en una pagina web

El código está genial, pero lo necesito que no sea sencible a mayúscula y minúscula. ;)

Saludos! ;)
  #12 (permalink)  
Antiguo 18/07/2010, 16:07
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: buscar texto en una pagina web

Cita:
Iniciado por pablo1111 Ver Mensaje
El código está genial, pero lo necesito que no sea sencible a mayúscula y minúscula. ;)

Saludos! ;)
Ahora echandole un vistazo, el código tiene algunas deficiencias. A ver si mañana tengo ganas de hacerle algunas mejoras

Cambia a esto var rg = new RegExt(c,'g\i');

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;" />
  #13 (permalink)  
Antiguo 19/07/2010, 14:08
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: buscar texto en una pagina web

Hola

Un código algo mas optimizado. Es case insensitive. Ahora se deberán introducir 3 caracteres antes del highlight
Código Javascript:
Ver original
  1. <?php
  2. $url = file_get_contents('http://www.monografias.com/trabajos5/asp/asp.shtml', true);
  3. $codigo =  $url;
  4. ?>
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  6. <html xmlns="http://www.w3.org/1999/xhtml"lang="es" xml:lang="es">
  7. <head>
  8. <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
  9. <script type="text/javascript">
  10. var cadena = '';
  11. var largo_cadena = 0;
  12.  
  13. window.onload = function() {cadena = document.getElementById('texto').innerHTML; largo_cadena = cadena.length;};
  14.  
  15. function Resaltar(cadABuskar) {
  16. var caracteresInput = cadABuskar.length;
  17.  
  18.     if (caracteresInput == 2) {
  19.         document.getElementById('texto').innerHTML = cadena;
  20.         document.getElementById('terminos').style.border = '';
  21.  
  22.     } else if (caracteresInput >= 3) {
  23.  
  24. var rgEx = new RegExp(cadABuskar, 'g\i');
  25.  
  26.             if (cadena.substr(0,parseInt(largo_cadena)).match(rgEx)) {
  27.                 var marca = cadena.substr(0,parseInt(largo_cadena)).replace(rgEx, function(coincidencia){return '<span style=\"background-color:#9ACD32;color:#FFF;\">' + coincidencia + '</span>';});
  28.                     document.getElementById('texto').innerHTML =  marca;
  29.             document.getElementById('terminos').style.border = 'solid #9ACD32 1px';
  30.             } else {
  31.             document.getElementById('texto').innerHTML = cadena;
  32.             document.getElementById('terminos').style.border = 'solid #FF0000 1px';
  33.         }
  34.     }
  35. }
  36. </script>
  37. </head>
  38. <body>
  39. <form method="post" action="" name="" autocomplete="off">
  40. Buscar Terminos: <input type="text" value="" id="terminos" onkeyup="Resaltar(this.value);" />
  41. </form>
  42. <div id="texto"><?php echo $codigo;?></div>
  43. </body>
  44. </html>

Parte de este código es gracias a @zerokilled, gracias por ensañarme a usar funciones en el replace

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;" />
  #14 (permalink)  
Antiguo 19/07/2010, 19:24
 
Fecha de Ingreso: julio-2010
Mensajes: 62
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: buscar texto en una pagina web

hola gente q sabe...
me pueden decir como diantres colocar este código?XD
... cual es la forma? o cuales son las rutas de inserción del código?
debo llamarlo de forma externa?... o lo incerto directo en el html?
gracias
  #15 (permalink)  
Antiguo 19/07/2010, 19:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: buscar texto en una pagina web

A mí me gustó mucho este que hizo Panino5001 hace 70 años http://www.forosdelweb.com/2656337-post10.html
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #16 (permalink)  
Antiguo 20/07/2010, 06:42
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: buscar texto en una pagina web

Cita:
Iniciado por abimaelrc Ver Mensaje
A mí me gustó mucho este que hizo Panino5001 hace 70 años http://www.forosdelweb.com/2656337-post10.html
No lo conocía. A ver si esta tarde me pongo con el por que así al vuelo no comprendo muy bien como funciona.
Y que siga así otros 70 más!!

Cita:
Iniciado por Mtf006 Ver Mensaje
hola gente q sabe...
me pueden decir como diantres colocar este código?XD
... cual es la forma? o cuales son las rutas de inserción del código?
debo llamarlo de forma externa?... o lo incerto directo en el html?
gracias
Solo necesitas copiar el código, pegarlo en cualquier editor de texto y guardarlo con la extensión .php
__________________
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;" />
  #17 (permalink)  
Antiguo 22/07/2010, 19:11
 
Fecha de Ingreso: julio-2010
Mensajes: 62
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: buscar texto en una pagina web

hola... lo he hecho
Cita:
Solo necesitas copiar el código, pegarlo en cualquier editor de texto y guardarlo con la extensión .php
pero no me resulta...lo he previsualizado en Explorer y en Safari.. pero nada... alguna idea de que puede ser?
gracias...
  #18 (permalink)  
Antiguo 23/07/2010, 05:49
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: buscar texto en una pagina web

Hola

No se que estás haciendo, pero el código funciona en FF, IE8, Opera y Chrome. ¿Qué quieres decir con que lo has previsualizado?

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;" />
  #19 (permalink)  
Antiguo 23/07/2010, 22:33
 
Fecha de Ingreso: julio-2010
Mensajes: 62
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: buscar texto en una pagina web

mira te comento... he colocado todo el codigo q posteaste en una hoja de DW, entonces cuando lo previsualizo (F12) no puedo buscar ningun texto.... seguramente es una idiotez u.u pero la verdad q no tengo idea de como modificar esto para q me resulte...
gracias
  #20 (permalink)  
Antiguo 24/07/2010, 03:58
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: buscar texto en una pagina web

Hola

Si hablamos de dreamweaver yo me retiro, no tengo ni idea

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;" />
  #21 (permalink)  
Antiguo 24/07/2010, 14:48
 
Fecha de Ingreso: julio-2010
Mensajes: 62
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: buscar texto en una pagina web

Oh!! sera bueno, gracias de todas formas.. :S
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 04:53.