Buscadores web en javaScript

JavaScript permite crear un motor de búsqueda básico, para diseño web potente y vistoso. Este buscador implementa busquedas en el titulo, en la descripción de las páginas y en las palabras clave. Para ello, esta información debe codificarse en el propio script, en un array. Su estructura es muy sencilla: cada página de tu sitio web es un elemento del array BaseDatos.

  1. <script language=”javascript” type=”text⁄javascript”>
  2. caracter = new Object(5)
  3. caracter[0] = ’á’
  4. caracter[1] = ’é’
  5. caracter[2] = ’í’
  6. caracter[3] = ’ó’
  7. caracter[4] = ’ú’
  8. caracter_nuevo = new Object(5)
  9. caracter_nuevo[0] = ’a’
  10. caracter_nuevo[1] = ’e’
  11. caracter_nuevo[2] = ’i’
  12. caracter_nuevo[3] = ’o’
  13. caracter_nuevo[4] = ’u’
  14. caracter_nuevo2 = new Object(5)
  15. caracter_nuevo2[0] = ’[áa]‘
  16. caracter_nuevo2[1] = ’[ée]‘
  17. caracter_nuevo2[2] = ’[íi]‘
  18. caracter_nuevo2[3] = ’[óo]‘
  19. caracter_nuevo2[4] = ’[úu]‘
  20. var BaseDatos = new Array(
  21. )
  22. var totales     ⁄⁄numero de entradas encontradas
  23. var Pagina      ⁄⁄string que contendra la pagina a mostrar
  24. var Entradas        ⁄⁄string que va guardando las entrdas encontradas
  25. var clave1, clave2  ⁄⁄palabra a buscar
  26. ⁄⁄obtiene longitud de la base de datos
  27. var longitud = BaseDatos.length
  28. function Buscaclave(FormBusqueda, desde) {
  29. ⁄⁄busca la palabra clave en el array de palabras clave
  30. ⁄⁄devuelve -1 si no hay coincidencias
  31. var index = -1
  32. ⁄⁄recorre el array en busca de la palabra clave (en cualquier parte)
  33. for (x = desde; x < longitud; x++) {
  34. if ( (BaseDatos[x].search(clave1) != -1) || (BaseDatos[x].search(clave2) != -1) ) {
  35. index = x
  36. break
  37. }
  38. }
  39. return index
  40. }
  41. function IniciaPagina(FormBusqueda) {
  42. ⁄⁄crea la pagina a visualizar y la muestra
  43. ⁄⁄cabecera y apertura cuerpo
  44. Pagina =    ’<!DOCTYPE HTML PUBLIC ”-⁄⁄DTD HTML 4.01 Transitional⁄⁄EN” ”http:⁄⁄www.disenoweb.org⁄TR⁄html4⁄loose.dtd”>\n’ +
  45. ‘<html><head>\n’ +
  46. ‘<title>Resultados de la busqueda<⁄title>\n’ +
  47. ‘<meta HTTP-EQUIV=”Content-Type” CONTENT=”text⁄html; charset=iso-8859-1″>\n’ +
  48. ‘<meta NAME=”AUTHOR” CONTENT=”Mensaje”>\n’ +
  49. ‘<link rel=”stylesheet” type=”text⁄css” href=”⁄Mensaje”><⁄head>\n’ +
  50. ‘<body>\n’ +
  51. ‘<h3>Resultados de la búsqueda<⁄h3>\n’
  52. if (totales != 0)
  53. Pagina += ’<p>Se han encontrado ’ + totales + ’ resultados que contienen la palabra <strong class=”rojo”>’ + FormBusqueda.palabra.value + ’<⁄strong>:<⁄p>\n’
  54. else
  55. Pagina += ’<p>No se han encontrado resultados para la palabra <strong class=”rojo”>’ + FormBusqueda.palabra.value + ’<⁄strong>.<⁄p>\n’
  56. }
  57. function TerminaPagina() {
  58. ⁄⁄final cuerpo
  59. Pagina +=   ’<⁄body><⁄html>\n’
  60. }
  61. function CreaEntradas(indice) {
  62. var CadenasEntrada
  63. ⁄⁄divide la cadena de resultados en subcadenas y escribe los resultados
  64. CadenasEntrada = BaseDatos[indice].split(“;”)
  65. Entradas += ’<p><a href=”‘ + CadenasEntrada[0] + ’.html” target=”_self”>’ + CadenasEntrada[1] + ’<⁄a><br>\n’
  66. Entradas += CadenasEntrada[2] + ’<⁄p>\n’
  67. }
  68. function MuestraPagina(Pagina) {
  69. ⁄⁄muestra el contenido del display
  70. window.document.open()
  71. window.document.write(Pagina)
  72. window.document.close()
  73. }
  74. function IniciaBuscador(FormBusqueda) {
  75. ⁄⁄inicia variables globales
  76. var desde = 0
  77. totales = 0
  78. Pagina = ”"
  79. Entradas = ”"
  80. ⁄⁄clave busqueda
  81. var palabraClave = document.forms["FormularioBusqueda"].palabra.value
  82. ⁄⁄detiene busqueda si palabra clave vacia
  83. if ( palabraClave == ”" ) {
  84. alert(“¡Introduzca cadena de búsqueda!”)
  85. return
  86. }
  87. ⁄⁄elimina acentos
  88. var palabra_sin = elimina_especiales(palabraClave)
  89. ⁄⁄obtiene la expresion regular para la busqueda (global e ignorando case)
  90. clave1 = new RegExp(palabraClave, ”gi”)
  91. clave2 = new RegExp(palabra_sin, ”gi”)
  92. ⁄⁄inicia variables locales
  93. var indice = -1
  94. ⁄⁄busca entrada de pagina que contenga la clave
  95. do {
  96. indice = Buscaclave(FormBusqueda, indice + 1)
  97. if (indice != -1) {
  98. CreaEntradas(indice)
  99. totales++
  100. }
  101. } while (indice != -1)
  102. ⁄⁄escribe pagina de resultados
  103. IniciaPagina(FormBusqueda)
  104. Pagina += Entradas
  105. TerminaPagina()
  106. ⁄⁄abre una ventana y escribe los resultados
  107. MuestraPagina(Pagina)
  108. }
  109. ⁄⁄SUSTITUYE TODAS LAS OCURRENCIAS DE UN CARACTER UNA CADENA POR OTRO CARACTER
  110. function sustituye_caracter(cadena, caracter, nuevo_caracter) {
  111. var longitud, indice
  112. longitud = cadena.length
  113. indice = cadena.indexOf(caracter)
  114. while ( (indice != -1) && (cadena.charAt(indice + 1) != ’]') ) {
  115. cadena = cadena.substring(0, indice) + nuevo_caracter + cadena.substring(indice + 1, longitud + 1)
  116. indice = cadena.indexOf(caracter, indice)
  117. }
  118. return cadena
  119. }
  120. ⁄⁄ELIMINA CARACTERES ESPECIALES
  121. function elimina_especiales(cadena) {
  122. ⁄⁄elimina caracteres con acento
  123. for (x = 0; x < 5; x++) {
  124. cadena = sustituye_caracter(cadena, caracter[x], caracter_nuevo[x])
  125. }
  126. ⁄⁄sustituye las vocales por una expresion regular para ignorar los acentos
  127. for (x = 0; x < 5; x++) {
  128. cadena = sustituye_caracter(cadena, caracter_nuevo[x], caracter_nuevo2[x])
  129. }
  130. return cadena
  131. }
  132. <⁄script>

Debe añadir el siguiente código a la página HTML, entre <body></body>:

  1. <form name=”FormularioBusqueda”>
  2. <p><small>Palabra clave:<⁄small><br>
  3. <input type=”text” name=”palabra” size=”25″>
  4. <input type=”button” value=”Buscar” name=”buscar” onClick=”IniciaBuscador(this.form)”>
  5. <input type=”reset” value=”Borrar” name=”borrar”><⁄p>
  6. <⁄form>

 


Lectura de parametros

Para determinados efectos es muy útil pasar parámetros a un página HTML. Para un ejemplo de desarrollo web típico es la necesidad de mostrar imágenes diferentes en una página: pude pasar el nombre de la imagen y su ancho a una plantilla generérica.

  1. <script language=”javascript” type=”text⁄javascript”>
  2. function getVar(nomb){
  3. var url = document.location.href
  4. if ( url.indexOf(nomb) != -1 ) {
  5. posiBeg = url.indexOf(“=”, url.indexOf(nomb))
  6. barre = url.indexOf(“&”, posiBeg)
  7. posiEnd = (barre != -1 ? barre : url.length)
  8. return url.substring(posiBeg + 1,posiEnd)
  9. } else {
  10. ⁄⁄informa de la ausencia del parametro
  11. return ’Parámetro no encontrado.’
  12. }
  13. }
  14. ⁄⁄Recuperacion de los valores de un parametro
  15. ⁄⁄(modificar segun nombre del parametro)
  16. ⁄⁄  var valor = getVar(‘NombreParametro’)
  17. <⁄script>

Debe añadir el siguiente código a la página HTML, entre <body></body>:

  1. <p>
  2. <a href=”⁄ejemplos⁄aportaciones⁄parametros.html?nombre=ElCodigo&seccion=JavaScript”>
  3. Enlace a página con paso de parámetros
  4. <⁄a>
  5. <⁄p>

 

 

Más Artículos

Como modificar y configurar Oscommerce

Alertas automaticas

Instalar las principales configuraciones Oscommerce

Confirmación previa

Cómo crear un blog de blogspot.com

Pop-up para visitas

Cómo crear módulos Joomla

Configurar Joomla paso a paso