Página de búsqueda de scripts en javascript. Busque la página usando jQuery. Campo de búsqueda desplegable

Recientemente hice una búsqueda de páginas usando jQuery. Mientras descubría la mejor manera de hacerlo para que fuera óptimo para navegar por el contenido de la página, terminé con 2 opciones de búsqueda. Como resultado, la segunda opción se adaptaba mejor a mis necesidades, pero hoy les hablaré de ambas.

En la primera opción, la búsqueda se realizará utilizando todas las palabras (símbolos) de una determinada parte del documento. En la segunda opción, la lista de palabras se especifica inicialmente; a medida que ingresa caracteres en la barra de búsqueda, se sugerirán las palabras que los contienen. Una especie de consejos de búsqueda.

1ra opción

Conectamos la biblioteca jQuery, el complemento de resaltado responsable de buscar y resaltar valores coincidentes en el texto, y un script que procesará las consultas de búsqueda. El script se ejecuta al hacer clic en un elemento con id="enviar".

< script type= "text/javascript" >$(documento) .ready (función () ($("#submit") .click (función () ( var término = "" ; var n = "0" ; $("cuerpo" ) .removeHighlight () ; $ ("p.resultados" ) .hide () .empty () ; término = $("#term" ) .attr ("valor" ); if ($("#term" ) .val () == "" ) ( $("p.results") .fadeIn () .append ("Ingrese la consulta de búsqueda en el campo de arriba" ); devuelve falso ; ) else ( $(".main" ) .highlight ( término ); n = $( "span.highlight" ) .length ; if (n == 0 ) ($("p.results") .fadeIn () .append ("No encontrado" ); ) else ($("p.results") . fadeIn () .append ("Encontrado: " + n+ " coincide." ); ) devuelve falso ; ) ) ); ) );

$(documento).ready(function())( $("#submit").click(function())( var term = ""; var n = "0"; $("body").removeHighlight() ; $ ("p.resultados").hide().empty(); término = $("#term").attr("valor"); if($("#term").val() == "" )( $("p.results").fadeIn().append("Ingrese la consulta de búsqueda en el campo de arriba"); return false; )else( $(".main").highlight(term); n = $( "span.highlight").length; if(n == 0)( $("p.results").fadeIn().append("No encontrado"); )else( $("p.results" ).fadeIn().append("Encontrado: "+n+" coincidencias."); ) devuelve falso; ) )); ));

variable término— obtiene el valor de la consulta de búsqueda;
variable norte— responsable del número de coincidencias encontradas;
función eliminarResaltar()— elimina resultados de búsqueda anteriores;
función esconder()— oculta el bloque con información sobre los resultados de la búsqueda;
función vacío()— elimina el contenido del bloque de resultados de búsqueda;
función fundirse()— hace visible el bloque con información sobre los resultados de la búsqueda;
función adjuntar()— agrega contenido al bloque con información sobre los resultados de búsqueda;
función destacar()— enmarca todas las palabras que coinciden con la consulta de búsqueda en una etiqueta span con clase = “resaltado”;
propiedad longitud— devolverá el número de coincidencias encontradas en la página.

Entre etiquetas cuerpo debe insertar un formulario para ingresar consultas de búsqueda, un contenedor para mostrar información sobre los resultados de la búsqueda y un bloque con una clase principal dentro del cual se realizará la búsqueda.

Contenido

Contenido

2da opción

Incluimos un archivo con estilos, una interfaz de usuario jQuery: widget de autocompletar, la biblioteca jQuery, el complemento de resaltado responsable de buscar y resaltar valores coincidentes en el texto y un script que procesará las consultas de búsqueda.

< script type= "text/javascript" >$(documento) .ready (función () ($("#submit") .click (función () ( var término = "#" ; var etiquetas = "" ; $("cuerpo" ) .removeHighlight () ; si ($("#etiquetas" ) .val () != "" ) ( término += $("#etiquetas" ) .val (); etiquetas = $("#etiquetas" ) .attr ( "valor" ); ) $("h3" ) .highlight (etiquetas); ubicación.href = term.toLowerCase () ; ) ); ) );

$(función() ( var etiquetas disponibles = [ "ActionScript", "BASIC", "C++", "Delphi", "Java", "JavaScript", "Pascal", "PHP", "Python", "Ruby", "Visual Fortran" ]; $("#tags").autocomplete(( fuente: etiquetas disponibles )); )); $(document).ready(function())( $("#submit").click(function())( var term = "#"; var tags = ""; $("body").removeHighlight() ; if ($("#tags").val() != "") ( término += $("#tags").val(); etiquetas = $("#tags").attr("valor" ); ) $("h3").highlight(tags); ubicación.href = term.toLowerCase(); )); ));

variable término– es responsable de generar un enlace a un marcador, comienza con el símbolo #, luego viene el nombre del marcador (el valor de la consulta de búsqueda);
variable etiquetas– obtiene el valor de la consulta de búsqueda;
función a minúsculas()— convierte la cadena a minúsculas;

En este caso, la búsqueda se realizará únicamente por elementos de la matriz. disponibleEtiquetas dentro de las etiquetas h3. El script genera un enlace al marcador y después de hacer clic en el botón de búsqueda, va a la etiqueta con la identificación especificada.

Busque la página usando jQuery: y .

Eso es todo, si alguien tiene alguna pregunta sobre cómo funcionan los scripts, puede preguntarla en los comentarios. Intentaré responder.

nombre de la clave del parámetro. Para el campo de búsqueda, se utiliza con mayor frecuencia "q" o "texto". valor de la clave del parámetro. La mayoría de las veces no se pregunta. El usuario puede cambiarlo a su propio texto si no se especifican los atributos de solo lectura y deshabilitado. modificado por el usuario acceso bloqueado, modificación por parte del usuario y transmisión de datos del parámetro actual el campo no puede estar vacío plantilla de entrada como en las expresiones regulares JS, después de lo cual es necesario enviar el formulario el número mínimo de caracteres requeridos para enviar el formulario el número máximo de caracteres que el usuario puede escribir, longitud del campo en símbolos, información sobre herramientas emergente de información sobre herramientas de marcador de posición al pasar el cursor del mouse, autocompletado. Los navegadores modernos muestran consultas de búsqueda ingresadas previamente en el dominio actual. Puedes desactivarlo o hacerlo más específico. lista de consultas recomendadas enfoque de campo con revisión ortográfica y gramatical (es decir, el período entre hacer clic en un elemento y hacer clic fuera del elemento) obtenido al cargar el documento

Elimine la cruz "Borrar" del campo de búsqueda, que elimina la entrada de texto ingresada anteriormente::-ms-clear ( /* pseudoelemento IE no estándar */ pantalla: ninguna; ) entrada::-botón-cancelar-búsqueda-webkit ( /* Pseudoelemento WebKit/Blink no estándar, pero Esc aún eliminará el texto ingresado anteriormente */ pantalla: ninguna; ) Cómo funciona el formulario de búsqueda en el sitio El código HTML más simple

Si escribe "pregunta" en el campo y hace clic en el botón "Buscar", la dirección de la página cambiará de "http://site/2011/06/forma-poiska-po-saitu..html?text=question" , ya que esto sucede cuando haces clic en el enlace. Cuando se carga la página, el script verifica la presencia de los parámetros especificados en la URL y, si los detecta, genera y muestra resultados de búsqueda para el sitio.

Pero para aumentar la velocidad de carga del documento, el script que procesa la solicitud generalmente se coloca solo en una página del sitio, a la que se realizará la transición si su dirección se especifica en el atributo de acción: " http:// sitio/búsqueda/?text=pregunta "

Para que el script funcione, es posible que se necesiten parámetros adicionales, que se especifican en . Este campo no se muestra.?searchid=808327 &text=question".

Abra el resultado del formulario en una nueva pestaña usando el atributo de destino.¿Dónde puedo obtener el script de búsqueda del sitio?

Puedes usar

  • ofrecido por servicios especiales de Yandex y Google,
  • integrado en el CMS utilizado (si está disponible), por ejemplo, en Blogger en "https://site.ru/search?q=vopros", donde "site.ru" se reemplaza con la dirección de su blog,
  • desarrollado de forma independiente, por ejemplo, en PHP.

La opción más sencilla es redirigir la solicitud a Google:>

Hola queridos lectores del blog LifeExample, todos utilizamos la búsqueda de páginas electrónicas en nuestros navegadores web usando las teclas de acceso rápido CTRL+F o F3. Y parece que no podemos escapar de esos privilegios, ya que muchas veces no tenemos tiempo para leer por nuestra cuenta todo el contenido de la página. El problema es que no todos los usuarios novatos conocen estas capacidades ocultas de cualquier navegador, pero se les puede ayudar instalando una búsqueda de páginas JavaScript casera en aquellos proyectos en los que no pueden prescindir de ella.

La búsqueda de páginas puede ser necesaria para páginas que proporcionan una gran cantidad de datos, incluidas tablas y listas. Observo que esta necesidad surge cuando el contenido de la página es estático y no se genera a partir de la base de datos.

Será más conveniente buscar la información necesaria en la página si implementa la interfaz adecuada para ello:

En el campo debe ingresar una palabra de búsqueda y hacer clic en el botón "Buscar", aquí todo es intuitivo. Pasemos a la implementación del propio mecanismo de búsqueda de páginas y veamos qué matices puede haber a la hora de implementarlo.

¿Cómo buscar una palabra en una página?
Necesitamos verificar la exactitud de los datos ingresados; en nuestro caso, solo cortaremos los espacios en blanco a los lados de la frase de búsqueda y también simplemente verificaremos el formulario en sí para ver si hay una consulta de búsqueda en él.
Dado que los datos son estáticos y se almacenan únicamente en el DOM de la página, la búsqueda se realizará precisamente de acuerdo con el contenido del DOM (Document Object Model).
Lo importante es mostrar al usuario todos los resultados que encontró nuestra búsqueda en JavaScript. Aquellos. resalte el fondo debajo de las partes encontradas del contenido de la página.
Dado que este módulo de búsqueda de mini páginas tiene sentido conectarse solo a páginas grandes que tienen desplazamiento, entonces, si hay una frase encontrada en algún lugar fuera de la vista, sería una buena idea desplazarse hasta el elemento encontrado.
La reutilización de la búsqueda también es un punto importante en el funcionamiento de este script. Porque resaltar las partes encontradas es el resultado de cambiar el contenido del objeto DOM, luego cada ciclo de búsqueda posterior debe sobrescribir los resultados del anterior y devolver el contenido de la página a su forma original, para cambios adicionales en la nueva iteración.
Bueno, eso parece ser todo, en pocas palabras. A pesar del volumen de puntos resaltados, su implementación no requiere mucho tiempo ni espacio en el código; aquí hay un script listo para usar para el mecanismo de búsqueda de páginas de JavaScript:


var lastResFind=""; // último resultado exitoso
var copy_page=""; // copia de la página en su forma original
función TrimStr(s) (
s = s.reemplazar(/^s+/g, "");
return s.replace(/s+$/g, "");
}
función FindOnPage(inputId) (//busca texto en la página, el ID del campo de entrada se pasa al parámetro
var obj = ventana.document.getElementById(inputId);
var textoParaBuscar;

Si (objeto) (
textToFind = TrimStr(obj.value);//recortar espacios
) demás (
alert("La frase ingresada no fue encontrada");
devolver;
}
si (textToFind == "") (
alert("No has ingresado nada");
devolver;
}

Si(document.body.innerHTML.indexOf(textToFind)=="-1")
alert("No se encontró nada, ¡verifique su entrada!");

Si(copiar_página.longitud>0)
document.body.innerHTML=copiar_página;
else copy_page=document.body.innerHTML;

Document.body.innerHTML = document.body.innerHTML.replace(eval("/name="+lastResFind+"/gi")," ");//borrar anclajes de desplazamiento anteriores
document.body.innerHTML = document.body.innerHTML.replace(eval("/"+textToFind+"/gi")," "+texto para buscar+""); //Reemplazar el texto encontrado con enlaces anclados;
lastResFind=textoParaBuscar; // guarda la frase de búsqueda para que en el futuro podamos borrar todos los enlaces que la utilicen
window.location = "#"+textToFind;//desplácese hasta la última coincidencia encontrada
}


Búsqueda de páginas JavaScript



Ingrese una palabra o frase para buscar.


ArtículoPesoCosto



Monitor de 19 pulgadas1 kg1900 rublos.
monitor de 18 pulgadas2 kilos1800 rublos.
Monitor de 20 pulgadas2 kilos1900 rublos.


Pruébelo, pruébelo con las consultas de búsqueda “19”, “2 kg” y otras. También te aconsejo que compruebes el desplazamiento automático; para ello, añade texto hasta que aparezca una barra de desplazamiento a la derecha.

Así es como se ve un ejemplo del uso del script:

En cuanto a los comentarios sobre el código, probablemente sean innecesarios aquí, ya que están presentes dentro del script. Lo único que puede resultar difícil para los principiantes es comprender el significado de las expresiones regulares al recortar espacios. Aconsejo a cualquiera que necesite ayuda que lea el artículo correspondiente sobre expresiones regulares.

Implementada en este artículo utilizando el lenguaje JavaScript, la búsqueda de páginas es válida en todos los navegadores, incluido Internet Explorer.

El campo de búsqueda de un sitio web es uno de los elementos de la interfaz de usuario más importantes de una página web. Con su ayuda, el usuario puede encontrar el contenido deseado en su sitio.

En este tutorial, aprenderá cómo crear marcas de campos de búsqueda usando HTML5, así como también cómo diseñar elementos de formulario usando el poder de CSS3, sin usar scripts.

1. Búsqueda de marcado HTML

El elemento es un contenedor para un formulario de búsqueda, se crea un campo de búsqueda usando un elemento o y se puede crear un botón para enviar datos al servidor usando un elemento o.

¿En qué se diferencia de? Ambos campos crean un campo de texto de una sola línea para la entrada de texto, pero type="search" se agrega al estándar HTML5 y es una sugerencia semántica para los navegadores. Todos los navegadores, excepto Mozilla Firefox, añaden una cruz de limpieza al campo. Para eliminarlo, puede cambiar el tipo de campo a type="text" .

¿En qué se diferencia de? No hay diferencia en la acción de los botones de envío creados con el primer o segundo método. La diferencia es que el elemento es un contenedor, por lo que en su interior se pueden colocar otros elementos, como imágenes o iconos.

Puede agregar texto a los campos del formulario de dos maneras:
1)
El color del texto mostrado será gris. Usando las siguientes reglas, puede configurar el texto de información sobre herramientas en cualquier color, cambiar el estilo y el fondo del campo. Estos selectores no se pueden combinar en una sola regla; de lo contrario, no funcionarán.

Entrada::-webkit-input-placeholder (color: #B6C0A5; estilo de fuente: cursiva; fondo: #E0EFCA; ) entrada:-moz-placeholder (color: #B6C0A5; estilo de fuente: cursiva; fondo: #E0EFCA; ) entrada:-ms-input-placeholder (color: #B6C0A5; estilo de fuente: cursiva; fondo: #E0EFCA;)

2)
El color del texto mostrado será negro. Puede establecer su color usando la propiedad de color, por ejemplo:

Entrada (color: blanco;)

Para mostrar iconos, no olvides conectarte.

2. Campo de búsqueda con botón de icono * (box-sizing: border-box;) formulario ( posición: relativa; ancho: 300px; margen: 0 auto; ) entrada ( ancho: 100%; alto: 42px; padding-left: 10px ; borde: 2px sólido #7BA7AB; radio del borde: 5px; contorno: ninguno; fondo: #F9F0DA; color: #9E9C9C; ) botón (posición: absoluta; arriba: 0; derecha: 0px; ancho: 42px; alto: 42px ; borde: ninguno; fondo: #7BA7AB; radio del borde: 0 5px 5px 0; cursor: puntero; ) botón:antes (contenido: "\f002"; familia de fuentes: FontAwesome; tamaño de fuente: 16px; color: # F9F0DA; ) 3. Campo de búsqueda con un botón dentro * (box-sizing: border-box;) formulario ( posición: relativa; ancho: 300px; margen: 0 auto; ) entrada, botón ( borde: ninguno; contorno: ninguno; radio de borde: 3px; ) entrada (ancho: 100%; alto: 42px; fondo: #F9F0DA; padding-left: 15px; ) botón (alto: 26px; ancho: 26px; posición: absoluta; arriba: 8px; derecha: 8px; fondo: #F15B42; cursor: puntero; ) botón:antes (contenido: "\f105"; familia de fuentes: FontAwesome; color: #F9F0DA; tamaño de fuente: 20px; peso de fuente: negrita; ) 4. Campo de búsqueda en estilo “plano” * (box-sizing: border-box;) formulario ( posición: relativa; ancho: 300px; margen: 0 auto; fondo: #A3D0C3; ) entrada, botón ( borde: ninguno; contorno: ninguno; fondo: transparente; ) entrada ( ancho: 100%; alto: 42 px; relleno-izquierda: 15 px; ) botón ( alto: 42 px; ancho: 42 px; posición: absoluta; arriba: 0; derecha: 0; cursor : puntero; ) botón:antes ( contenido: "\f002"; familia de fuentes: FontAwesome; tamaño de fuente: 16px; color: #F9F0DA; ) 5. Cuadro de búsqueda con borde inferior grueso * (tamaño de caja: cuadro de borde ;) formulario (posición: relativa; ancho: 300px; margen: 0 automático; fondo: #F9F0DA; borde inferior: 4px sólido #be290e;) entrada, botón (borde: ninguno; contorno: ninguno; fondo: transparente;) entrada ( ancho: 100%; alto: 42 px; relleno-izquierda: 15 px; ) botón ( alto: 42 px; ancho: 42 px; posición: absoluta; arriba: 0; derecha: 0; cursor: puntero; ) botón: antes ( contenido: "\f178"; familia de fuentes: FontAwesome; tamaño de fuente: 20px; color: #be290e; ) 6. Campo de búsqueda con color de borde cambiante * (tamaño del cuadro: cuadro de borde;) formulario (posición: relativa; ancho: 300 px; margen: 0 automático;) entrada, botón (esquema: ninguno; fondo: transparente;) entrada ( ancho: 100%; alto: 42 px; relleno izquierdo: 15 px; borde: 3 px sólido #F9F0DA; ) botón ( borde: ninguno; alto: 42 px; ancho: 42 px; posición: absoluta; arriba: 0; derecha: 0; cursor: puntero; ) botón: antes ( contenido: "\f002"; familia de fuentes: FontAwesome; tamaño de fuente: 16px; color: #F9F0DA; ) entrada:enfoque (color del borde: #311c24; ) 7. Campo de búsqueda desplegable

El campo de búsqueda aparece al hacer clic en el botón con el icono.

* (tamaño de caja: cuadro de borde;) formulario ( posición: relativa; ancho: 300 px; margen: 0 auto; altura: 42 px; ) entrada ( altura: 42 px; ancho: 0; relleno: 0 42 px 0 15 px; borde: ninguno; borde inferior: 2px sólido transparente; contorno: ninguno; fondo: transparente; transición: .4s cúbico-bezier(0, 0.8, 0, 1); posición: absoluta; arriba: 0; derecha: 0; índice z : 2; ) entrada:enfoque (ancho: 300px; índice z: 1; borde inferior: 2px sólido #F9F0DA; ) botón (fondo: #683B4D; borde: ninguno; alto: 42px; ancho: 42px; posición: absoluta ; arriba: 0; derecha: 0; cursor: puntero; ) botón:antes ( contenido: "\f002"; familia de fuentes: FontAwesome; tamaño de fuente: 16px; color: #F9F0DA; )

8. Campo de búsqueda de ancho creciente * (box-sizing: border-box;) formulario ( ancho: automático; flotante: derecha; margen derecho: 30px; ) entrada (ancho: 250px; alto: 42px; relleno-izquierda: 15px; radio del borde: 42px; borde: 2px sólido #324b4e; fondo: #F9F0DA; contorno: ninguno; posición: relativa; transición: .3s lineal; ) entrada: foco (ancho: 300px;) botón (ancho: 42px; alto: 42px; fondo: ninguno; borde: ninguno; posición: absoluta; arriba: -2px; derecha: 0; ) botón:antes( contenido: "\f002"; familia de fuentes: FontAwesome; color: #324b4e; )

Respuesta actualizada:

Al principio no entendí que deseas abrir una página web que no controlas y luego usar JavaScript en tu navegador para interactuar con ella.

La información de la respuesta original a continuación sigue siendo relevante, pero la pregunta es: ¿cómo hago para que el código funcione en el contexto correcto? Y la respuesta: hay al menos dos formas:

    Cualquier navegador decente hoy en día tiene herramientas de depuración integradas. Mire el menú para verlas, pero en muchos navegadores se puede acceder a ellas mediante la tecla F12 o Ctrl + Shift + I. En estas herramientas encontrará una "consola" donde puede ingresar JavaScript y ejecutarlo en el contexto de la página. estás mirando.

    Esto es excelente para hacer cosas de forma interactiva, pero es un poco complicado repetirlo cada vez. También puedes poner el código en un archivo local (por ejemplo, /home/tjc/foo.js) y luego, cuando vayas a la página, usar la consola para agregar ese script a la página (lo que hará que se ejecute en el archivo local). contexto de la página). Por ejemplo:

    Document.documentElement.appendChild(document.createElement("script")).src = "file:///home/tjc/foo.js";

    Una vez que su secuencia de comandos haga lo que desea, puede convertirla en un marcador. Este es un marcador del navegador que utiliza el esquema javascript: en lugar del habitual http: etc. Vea el enlace para más detalles. Necesitará una herramienta que tome su código JavaScript y realice la codificación de URL necesaria por usted, como Bookmarklet Crunchinator o similar.

Respuesta original:

Entonces encontrará el texto u obtendrá el elemento por id/clase...

Estas son tres preguntas muy diferentes: