API de Programmable Search Element Control

Puedes incorporar componentes del Motor de Búsqueda Programable (cuadros de búsqueda y páginas de resultados de búsqueda) en tus páginas web y otras aplicaciones web con lenguaje de marcado HTML. Estos elementos del Motor de Búsqueda Programable constan de componentes que se renderizan según la configuración almacenada por el servidor de Programmable Search, junto con las personalizaciones que realices.

Todo el código JavaScript se carga de forma asíncrona, lo que permite que tu página web siga cargándose mientras el navegador recupera el código JavaScript del Motor de Búsqueda Programable.

Introducción

En este documento, se proporciona un modelo básico para agregar elementos del Motor de Búsqueda Programable a tu página web, junto con explicaciones de los componentes configurables del elemento y la flexible API de JavaScript.

Alcance

En este documento, se describe cómo usar las funciones y propiedades específicas de la API de Programmable Search Engine Control.

Compatibilidad del navegador

Puedes encontrar la lista de navegadores compatibles con el Motor de Búsqueda Programable aquí.

Público

Esta documentación está dirigida a los desarrolladores que deseen agregar la funcionalidad de la Búsqueda Programable de Google a sus páginas.

Elementos de Búsqueda Programable

Puedes usar el lenguaje de marcado HTML para agregar un elemento de Búsqueda Programable a tu página. Cada elemento consta de, al menos, un componente: un cuadro de búsqueda, un bloque de resultados de la búsqueda o ambos. El cuadro de búsqueda acepta la entrada del usuario de cualquiera de las siguientes maneras:

  • Una búsqueda escrita en el campo de entrada de texto
  • Es una cadena de consulta integrada en una URL.
  • Ejecución programática

Además, el bloque de resultados de la búsqueda acepta entradas de las siguientes maneras:

  • Es una cadena de consulta integrada en una URL.
  • Ejecución programática

Están disponibles los siguientes tipos de elementos de Búsqueda Programable:

Tipo de elemento Componentes Descripción
standard <div class="gcse-search"> Un cuadro de búsqueda y resultados de la búsqueda, que se muestran en el mismo <div>.
dos columnas <div class="gcse-searchbox"> y <div class="gcse-searchresults"> Un diseño de dos columnas con resultados de la búsqueda en un lado y un cuadro de búsqueda en el otro. Si planeas insertar varios elementos en el modo de dos columnas en tu página web, puedes usar el atributo gname para vincular un cuadro de búsqueda con un bloque de resultados de búsqueda.
Solo cuadro de búsqueda <div class="gcse-searchbox-only"> Un cuadro de búsqueda independiente
searchresults-only <div class="gcse-searchresults-only"> Es un bloque independiente de resultados de la búsqueda.

Puedes agregar la cantidad que desees de elementos de búsqueda válidos a tu página web. En el modo de dos columnas, deben estar presentes todos los componentes requeridos (un cuadro de búsqueda y un bloque de resultados de búsqueda).

A continuación, se muestra un ejemplo de un elemento de búsqueda simple:

<!-- Put the following javascript before the closing </head> tag
and replace 123456 with your own Programmable Search Engine ID. -->
<script async src="https://cse.google.com/cse.js?cx=123456"></script>

<!-- Place this tag where you want both of the search box and the search results to render -->
<div class="gcse-search"></div>

Cómo componer diferentes opciones de diseño con elementos de Búsqueda Programable

Las siguientes opciones de diseño están disponibles en la página Aspecto del panel de control del Motor de Búsqueda Programable. A continuación, se incluyen algunos lineamientos generales para componer opciones de diseño con elementos de Búsqueda programable. Para ver una demostración de cualquiera de estas opciones, haz clic en el vínculo.

Opción Componentes
Ancho completo <div class="gcse-search">
Compacto <div class="gcse-search">
Dos columnas <div class="gcse-searchbox">, <div class="gcse-searchresults">
Dos páginas <div class="gcse-searchbox-only"> en la primera página y <div class="gcse-searchresults-only"> (o algún otro componente) en la segunda
Solo resultados <div class="gcse-searchresults-only">
Alojado en Google <div class="gcse-searchbox-only">

Más información sobre las opciones de diseño.

Cómo personalizar elementos de la Búsqueda Programable

Para personalizar los colores, la fuente o el estilo de los vínculos, ve a la página Aspecto de tu motor de búsqueda programable.

Puedes usar atributos opcionales para anular las configuraciones creadas en el panel de control del Motor de Búsqueda Programable. Esto te permite crear una experiencia de búsqueda específica para la página. Por ejemplo, el siguiente código crea un cuadro de búsqueda que abre una página de resultados (http://www.example.com?search=lady+gaga) en una ventana nueva. El valor del atributo queryParameterName, junto con la cadena de consulta del usuario, se usa para crear la URL de los resultados.

Ten en cuenta que el atributo queryParameterName tiene el prefijo data-. Este prefijo es obligatorio para todos los atributos.

<div class="gcse-searchbox-only" data-resultsUrl="http://www.example.com" data-newWindow="true" data-queryParameterName="search">

Si usaste el panel de control del Motor de Búsqueda Programable para habilitar funciones como autocompletar o refinamientos, puedes usar atributos para personalizar esas funciones. Cualquier personalización que especifiques con estos atributos anulará la configuración realizada en el panel de control. En el siguiente ejemplo, se crea un elemento de búsqueda de dos columnas con las siguientes características:

  • La administración del historial está habilitada
  • La cantidad máxima de autocompletados que se muestran está establecida en 5.
  • Los refinamientos se muestran como vínculos.

<div class="gcse-searchbox" data-enableHistory="true" data-autoCompleteMaxCompletions="5">
<div class="gcse-searchresults" data-refinementStyle="link">

Atributos admitidos

Atributo Tipo Descripción Componente
General
gname String (Opcional) Nombre del objeto Search Element. Se usa un nombre para recuperar un componente asociado por su nombre o para vincular un componente searchbox con un componente searchresults. Si no se proporciona, el Motor de Búsqueda Programable generará automáticamente un gname según el orden de los componentes en la página web. Por ejemplo, el primer searchbox-only sin nombre tiene el gname "searchbox-only0", el segundo tiene el gname "searchbox-only1", y así sucesivamente. Ten en cuenta que el gname generado automáticamente para un componente en un diseño de dos columnas será two-column. En el siguiente ejemplo, se usa el gname storesearch para vincular un componente searchbox con un componente searchresults:
<div class="gcse-searchbox" data-gname="storesearch"></div>
<div class="gcse-searchresults" data-gname="storesearch"></div>

Cuando se recupera un objeto, si más de un componente tiene el mismo gname, el Motor de Búsqueda Programable usará el último componente de la página.

Cualquiera
autoSearchOnLoad Booleano Especifica si se debe ejecutar una búsqueda con la consulta incorporada en la URL de la página que se está cargando. Ten en cuenta que debe haber una cadena de consulta en la URL para ejecutar la búsqueda automática. Valor predeterminado: true. Cualquiera
enableHistory Booleano Si es true, habilita la administración del historial para los botones Atrás y Adelante del navegador. Mira una demostración.

cuadro de búsqueda

Solo cuadro de búsqueda

queryParameterName String Nombre del parámetro de consulta, por ejemplo, q (predeterminado) o query. Se incorporará en la URL (por ejemplo, http://www.example.com?q=lady+gaga). Ten en cuenta que especificar solo el nombre del parámetro de consulta no activa la búsqueda automática en la carga. Para ejecutar la búsqueda automática, debe haber una cadena de consulta en la URL. Cualquiera
resultsUrl URL Es la URL de la página de resultados. (La opción predeterminada es la página alojada en Google). Solo cuadro de búsqueda
newWindow Booleano Especifica si la página de resultados se abre en una ventana nueva. Valor predeterminado: false. Solo cuadro de búsqueda
ivt Booleano

Este parámetro te permite proporcionar un valor booleano que le informa a Google que deseas permitir anuncios que utilizan una cookie exclusiva para el tráfico no válido y el almacenamiento local en el tráfico con consentimiento y sin este.

true Cuando este parámetro no está presente o lo configuras como "true", estableceremos una cookie solo para el tráfico no válido y usaremos el almacenamiento local solo en el tráfico con consentimiento.

false Cuando configures este parámetro como "false", estableceremos una cookie solo para el tráfico no válido y usaremos el almacenamiento local en el tráfico con consentimiento y sin consentimiento.

Valor predeterminado: false

Ejemplo de uso: <div class="gcse-search" data-ivt="true"></div>

searchresults

searchresults-only

mobileLayout String

Especifica si se deben usar los diseños para dispositivos móviles.

enabled Usa el diseño para dispositivos móviles solo en estos dispositivos.

disabled No usa el diseño para dispositivos móviles en ningún dispositivo.

forced Usa el diseño para dispositivos móviles en todos los dispositivos.

Valor predeterminado: enabled

Ejemplo de uso: <div class="gcse-search" data-mobileLayout="disabled"></div>

Cualquiera
Autocompletar
enableAutoComplete Booleano Solo está disponible si se habilitó la función de autocompletar en el panel de control del Motor de Búsqueda Programable. true habilita la función de autocompletar. Cualquiera
autoCompleteMaxCompletions Número entero Es la cantidad máxima de sugerencias de autocompletado que se pueden mostrar.

cuadro de búsqueda

Solo cuadro de búsqueda

autoCompleteMaxPromotions Número entero Es la cantidad máxima de promociones que se mostrarán en la función de autocompletar.

cuadro de búsqueda

Solo cuadro de búsqueda

autoCompleteValidLanguages String Lista separada por comas de los idiomas para los que se debe habilitar la función de autocompletar. Idiomas admitidos.

cuadro de búsqueda

Solo cuadro de búsqueda

Mejoras
defaultToRefinement String Solo está disponible si se crearon refinamientos en el panel de control del Motor de Búsqueda Programable. Especifica la etiqueta de refinamiento predeterminada que se mostrará.Nota: Este atributo no se admite para el diseño alojado en Google. Cualquiera
refinementStyle String Los valores aceptables son tab (predeterminado) y link. link solo se admite si la búsqueda de imágenes está inhabilitada o si está habilitada, pero la búsqueda web está inhabilitada.

searchresults

searchresults-only

Búsqueda de imágenes
enableImageSearch Booleano Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Si es true, se habilita la búsqueda con imágenes. Los resultados de imágenes se mostrarán en una pestaña separada.

searchresults

searchresults-only

defaultToImageSearch Booleano Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Si es true, la página de resultados de la búsqueda mostrará los resultados de la búsqueda de imágenes de forma predeterminada. Los resultados web estarán disponibles en una pestaña separada.

Cualquiera
imageSearchLayout String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Especifica el diseño de la página de resultados de la búsqueda de imágenes. Los valores aceptables son classic, column o popup.

searchresults

searchresults-only

imageSearchResultSetSize Número entero, cadena Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Especifica el tamaño máximo del conjunto de resultados de la búsqueda de imágenes. Por ejemplo, large, small, filtered_cse y 10.

Cualquiera
image_as_filetype String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Restringe los resultados a archivos con una extensión especificada.

Las extensiones admitidas son jpg, gif, png, bmp, svg, webp, ico y raw.

Cualquiera

image_as_oq String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Filtra los resultados de la búsqueda con un OR lógico.

Ejemplo de uso si deseas resultados de la búsqueda que incluyan "término1" o "término2":<div class="gcse-search" data-image_as_oq="term1 term2"></div>

Cualquiera

image_as_rights String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Filtros basados en licencias.

Los valores admitidos son cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived y combinaciones de estos.

Consulta las combinaciones típicas.

Cualquiera

image_as_sitesearch String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Restringe los resultados a páginas de un sitio específico.

Ejemplo de uso: <div class="gcse-search" data-image_as_sitesearch="example.com"></div>

Cualquiera

image_colortype String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Restringe la búsqueda a imágenes en blanco y negro (mono), en escala de grises o en color. Los valores admitidos son mono, gray y color.

Cualquiera

image_cr String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Restringe los resultados de la búsqueda a los documentos que se originan en un país específico.

Valores admitidos

Cualquiera

image_dominantcolor String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Restringe la búsqueda a imágenes con un color dominante específico. Los valores admitidos son red, orange, yellow, green, teal, blue, purple, pink, white, gray, black y brown.

Cualquiera

image_filter String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Filtrado automático de los resultados de la búsqueda

Valores admitidos: 0/1

Ejemplo de uso: <div class="gcse-search" data-image_filter="0"></div>

Cualquiera

image_gl String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable. Potencia los resultados de la búsqueda cuyo país de origen coincida con el valor del parámetro.

Valores admitidos

Cualquiera

image_size String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Devuelve imágenes de un tamaño especificado, donde el tamaño puede ser uno de los siguientes: icon, small, medium, large, xlarge, xxlarge o huge.

Cualquiera

image_sort_by String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Ordenar los resultados por fecha o por otro contenido estructurado

Para ordenar por relevancia, usa una cadena vacía (image_sort_by="").

Ejemplo de uso: <div class="gcse-search" data-image_sort_by="date"></div>

Cualquiera

image_type String Solo está disponible si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

Restringe la búsqueda a imágenes de un tipo específico. Los valores admitidos son clipart (imágenes prediseñadas), face (rostros de personas), lineart (dibujos), stock (fotos de stock), photo (fotografías) y animated (GIF animados).

Cualquiera

Búsqueda web
disableWebSearch Booleano Si es true, inhabilita la búsqueda web. Por lo general, solo se usa si se habilitó la búsqueda de imágenes en el panel de control del Motor de Búsqueda Programable.

searchresults

searchresults-only

webSearchQueryAddition String Se agregan términos adicionales a la búsqueda con un OR lógico.

Ejemplo de uso: <div class="gcse-search" data-webSearchQueryAddition="term1 term2"></div>

Cualquiera
webSearchResultSetSize Número entero, cadena Es el tamaño máximo del conjunto de resultados. Se aplica tanto a la búsqueda de imágenes como a la búsqueda web. El valor predeterminado depende del diseño y de si el Motor de Búsqueda Programable está configurado para buscar en toda la Web o solo en sitios específicos. Los valores aceptables son los siguientes:
  • Número entero del 1 al 20
  • small: Solicita un conjunto de resultados pequeño, generalmente 4 resultados por página.
  • large: Solicita un conjunto de resultados grande, generalmente 8 resultados por página.
  • filtered_cse: Solicita hasta 10 resultados por página, con un máximo de 10 páginas o 100 resultados.
Cualquiera
webSearchSafesearch String Especifica si SafeSearch está habilitado para los resultados de la búsqueda web. Los valores aceptados son off y active. Cualquiera
as_filetype String Restringe los resultados a archivos con una extensión especificada. En el Centro de ayuda de Search Console, puedes encontrar una lista de los tipos de archivo que Google puede indexar.

Cualquiera

as_oq String Filtra los resultados de la búsqueda con un OR lógico.

Ejemplo de uso si deseas resultados de la búsqueda que incluyan "término1" o "término2":<div class="gcse-search" data-as_oq="term1 term2"></div>

Cualquiera
as_rights String Filtros basados en licencias.

Los valores admitidos son cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived y combinaciones de estos.

Consulta https://wiki.creativecommons.org/wiki/CC_Search_integration para ver las combinaciones típicas.

Cualquiera

as_sitesearch String Restringe los resultados a páginas de un sitio específico.

Ejemplo de uso: <div class="gcse-search" data-as_sitesearch="example.com"></div>

Cualquiera
cr String Restringe los resultados de la búsqueda a los documentos que se originan en un país específico.

Valores admitidos

Ejemplo de uso: <div class="gcse-search" data-cr="countryFR"></div>

Cualquiera
filter String Filtrado automático de los resultados de la búsqueda

Valores admitidos: 0/1

Ejemplo de uso: <div class="gcse-search" data-filter="0"></div>

Cualquiera
gl String Potencia los resultados de la búsqueda cuyo país de origen coincida con el valor del parámetro.

Esto solo funcionará en conjunto con el parámetro de configuración del valor de idioma.

Valores admitidos

Ejemplo de uso: <div class="gcse-search" data-gl="fr"></div>

Cualquiera
lr String Restringe los resultados de la búsqueda a los documentos escritos en un idioma específico.

Valores admitidos

Ejemplo de uso: <div class="gcse-search" data-lr="lang_fr"></div>

Cualquiera
sort_by String Ordenar los resultados por fecha o por otro contenido estructurado El valor del atributo debe ser una de las opciones proporcionadas en la configuración de Orden de los resultados del motor de búsqueda programable.

Para ordenar por relevancia, usa una cadena vacía (sort_by="").

Ejemplo de uso: <div class="gcse-search" data-sort_by="date"></div>

Cualquiera
Resultados de la búsqueda
enableOrderBy Booleano Permite ordenar los resultados por relevancia, fecha o etiqueta. Cualquiera
linkTarget String Establece el destino del vínculo. Valor predeterminado: _blank.

searchresults

searchresults-only

noResultsString String Especifica el texto predeterminado que se mostrará cuando no haya resultados que coincidan con la búsqueda. La cadena de resultado predeterminada se puede usar para mostrar una cadena localizada en todos los idiomas admitidos, mientras que la personalizada no.

searchresults

searchresults-only

resultSetSize Número entero, cadena Es el tamaño máximo del conjunto de resultados. Por ejemplo, large, small, filtered_cse, 10. El valor predeterminado depende del diseño y de si el motor está configurado para buscar en toda la Web o solo en sitios específicos. Cualquiera
safeSearch String Especifica si SafeSearch está habilitado para la búsqueda web y de imágenes. Los valores aceptados son off y active. Cualquiera

Devoluciones de llamada

Diagrama de secuencia de devolución de llamada
Diagrama de secuencia de devoluciones de llamada desde el código JavaScript del Elemento de búsqueda

Las devoluciones de llamada admiten el control detallado de los procesos de inicialización y búsqueda de elementos de búsqueda. Se registran con el JavaScript del Elemento de búsqueda a través del objeto global __gcse. Register Callbacks ilustra el registro de todas las devoluciones de llamada admitidas.

Registrar devoluciones de llamada

  window.__gcse = {
    parsetags: 'explicit', // Defaults to 'onload'
    initializationCallback: myInitializationCallback,
    searchCallbacks: {
      image: {
        starting: myImageSearchStartingCallback,
        ready: myImageResultsReadyCallback,
        rendered: myImageResultsRenderedCallback,
      },
      web: {
        starting: myWebSearchStartingCallback,
        ready: myWebResultsReadyCallback,
        rendered: myWebResultsRenderedCallback,
      },
    },
  };
  

La devolución de llamada de inicialización

La devolución de llamada de inicialización se invoca antes de que el JavaScript del Elemento de búsqueda renderice elementos de búsqueda en el DOM. Si parsetags se establece en explicit en __gcse, el JavaScript del elemento de búsqueda deja la renderización de los elementos de búsqueda en la devolución de llamada de inicialización (como se muestra en Cómo registrar devoluciones de llamada). Esto se puede usar para seleccionar elementos que se renderizarán o para aplazar la renderización de elementos hasta que sean necesarios. También puede anular los atributos de los elementos. Por ejemplo, puede convertir un cuadro de búsqueda configurado a través del panel de control o los atributos HTML para que se establezca de forma predeterminada en la búsqueda web en un cuadro de búsqueda de imágenes, o bien especificar que las búsquedas enviadas a través de un formulario de motor de búsqueda programable se ejecuten en un elemento solo de resultados de búsqueda. Mira una demostración.

El rol de la devolución de llamada de inicialización se controla con el valor de la propiedad parsetags del objeto __gcse.

  • Si su valor es onload, el JavaScript del Elemento de búsqueda renderiza automáticamente todos los Elementos de búsqueda en la página. Aún se invoca la devolución de llamada de inicialización, pero no es responsable de renderizar los Elementos de la Búsqueda.
  • Si su valor es explicit, el JavaScript del Elemento de búsqueda no renderiza Elementos de búsqueda. La devolución de llamada puede renderizarlos de forma selectiva con la función render() o renderizar todos los elementos de búsqueda con la función go().

En el siguiente código, se muestra cómo renderizar un cuadro de búsqueda, junto con los resultados de la búsqueda, en un div, con la etiqueta de análisis explicit y la devolución de llamada de inicialización:

Ejemplo de devolución de llamada de inicialización

Debemos incluir un <div> con un valor de ID en el que queremos que aparezca el código del Elemento de búsqueda:

    <div id="test"></div>
Agrega este código JavaScript después de <div>. Ten en cuenta que hace referencia a test, el id que usamos para identificar el <div>.
const myInitCallback = function() {
  if (document.readyState == 'complete') {
    // Document is ready when Search Element is initialized.
    // Render an element with both search box and search results in div with id 'test'.
    google.search.cse.element.render(
        {
          div: "test",
          tag: 'search'
         });
  } else {
    // Document is not ready yet, when Search Element is initialized.
    google.setOnLoadCallback(function() {
       // Render an element with both search box and search results in div with id 'test'.
        google.search.cse.element.render(
            {
              div: "test",
              tag: 'search'
            });
    }, true);
  }
};

// Insert it before the Search Element code snippet so the global properties like parsetags and callback
// are available when cse.js runs.
window.__gcse = {
  parsetags: 'explicit',
  initializationCallback: myInitCallback
};

Incluye este código HTML para comenzar a cargar el Elemento de búsqueda. Reemplaza el valor cx en la cláusula src por tu propio cx.

<script async
  src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>

Devoluciones de llamada de búsqueda

El JavaScript del elemento de búsqueda admite seis devoluciones de llamada que operan en el flujo de control de búsqueda. Las devoluciones de llamada de búsqueda vienen en pares: una devolución de llamada de búsqueda web y una devolución de llamada de búsqueda de imágenes coincidente:

  • Búsqueda en curso
    • Para la búsqueda de imágenes
    • Para la búsqueda web
  • Los resultados están listos.
    • Para la búsqueda de imágenes
    • Para la búsqueda web
  • Resultados renderizados
    • Para la búsqueda de imágenes
    • Para la búsqueda web

Al igual que la devolución de llamada de inicialización, las devoluciones de llamada de búsqueda se configuran con entradas en el objeto __gcse. Esto sucede cuando se inicia el código JavaScript del elemento de búsqueda. Se ignoran las modificaciones en __gcse después del inicio.

A cada una de estas devoluciones de llamada se le pasa el gName del Elemento de búsqueda como argumento. El gname es útil cuando una página contiene más de una búsqueda. Asigna valores de gname a un elemento de búsqueda con el atributo data-gname:

<div class="gcse-searchbox" data-gname="storesearch"></div>

Si el código HTML no identifica el gname, el JavaScript del Elemento de búsqueda genera un valor que permanecerá coherente hasta que se modifique el código HTML.

Devolución de llamada de inicio de búsqueda de imágenes o en la Web

Las devoluciones de llamada de inicio de la búsqueda se invocan inmediatamente antes de que el elemento de búsqueda de JavaScript solicite resultados de la búsqueda a su servidor. Un ejemplo de caso de uso sería usar la hora local del día para controlar los cambios en la búsqueda.

searchStartingCallback(gname, query)
gname
Cadena de identificación del elemento de búsqueda
query
Valor de
ingresado por el usuario (es posible que se haya modificado con el elemento de búsqueda de JavaScript).

La devolución de llamada muestra el valor que se debe usar como la búsqueda para esta búsqueda. Si devuelve una cadena vacía, se ignora el valor devuelto y el llamador usa la búsqueda sin modificar.

También puedes colocar la función de devolución de llamada en el objeto __gcse o agregar la devolución de llamada al objeto de forma dinámica con JavaScript:

window.__gcse['searchCallbacks']['web']['starting'] = function(gname, query) {...};
Ejemplo de devolución de llamada de inicio de la búsqueda

El ejemplo de devolución de llamada de inicio de búsqueda en Ejemplo de devolución de llamada de inicio de búsqueda agrega morning o afternoon a la búsqueda según la hora del día.

Ejemplo de devolución de llamada de inicio de búsqueda
    const myWebSearchStartingCallback = (gname, query) => {
      const hour = new Date().getHours();
      return query + (hour < 12 ? ' morning' : ' afternoon');
    };
    window.myImageSearchStartingCallbackName = myWebSearchStartingCallback;

Instala esta devolución de llamada en window.__gcse:

  window.__gcse || (window.__gcse = {});
    window.__gcse.searchCallbacks = {
      image: {
        starting: 'myImageSearchStartingCallbackName',
      },
      web: {
        starting: myWebSearchStartingCallback,
      },
    };
  
  <script
  async src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>

Devolución de llamada que indica que los resultados de la búsqueda de imágenes o web están listos

Estas devoluciones de llamada se invocan inmediatamente antes de que el JavaScript del Elemento de búsqueda renderice las promociones y los resultados. Un ejemplo de caso de uso sería una devolución de llamada que renderiza promociones y resultados con un estilo que no se puede especificar con la personalización normal.

resultsReadyCallback(gname, query, promos, results, div)
gname
Cadena de identificación del elemento de búsqueda
query
consulta que produjo estos resultados
promos
un array de objetos de promoción, que corresponden a las promociones que coinciden con la búsqueda del usuario. Consulta la definición del objeto promotion.
results
, un array de objetos de resultado. Consulta la definición del objeto result.
div
un elemento div de HTML ubicado en el DOM donde el Elemento de búsqueda normalmente colocaría promociones y resultados de la búsqueda Normalmente, el código JavaScript del Elemento de búsqueda se encargaría de completar este div, pero esta devolución de llamada puede optar por detener la renderización automática de los resultados y usar este div para renderizar los resultados por sí misma.

Si esta devolución de llamada muestra un valor de true, el JavaScript del Elemento de búsqueda se salta el trabajo del pie de página.

Ejemplo de devolución de llamada de resultados listos

La devolución de llamada resultsReady de ejemplo en Ejemplo de devolución de llamada de resultados listos anula la presentación predeterminada de las promociones y los resultados con un reemplazo muy simple.

Ejemplo de devolución de llamada de resultados listos
    const myResultsReadyCallback = function(name, q, promos, results, resultsDiv) {
      const makePromoElt = (promo) => {
        const anchor = document.createElement('a');
        anchor.href = promo['url'];
        anchor.target = '_blank';
        anchor.classList.add('gs-title');
        const span = document.createElement('span');
        span.innerHTML = 'Promo: ' + promo['title'];
        anchor.appendChild(span);
        return anchor;
      };
      const makeResultParts = (result) => {
        const anchor = document.createElement('a');
        anchor.href = result['url'];
        anchor.target = '_blank';
        anchor.classList.add('gs_title');
        anchor.appendChild(document.createTextNode(result['visibleUrl']));
        const span = document.createElement('span');
        span.innerHTML = ' ' + result['title'];
        return [anchor, span];
      };

      const table = document.createElement('table');
      if (promos) {
        for (const promo of promos) {
          const row = table.insertRow(-1);
          const cell = row.insertCell(-1);
          cell.appendChild(makePromoElt(promo));
        }
        resultsDiv.appendChild(table);
        resultsDiv.appendChild(document.createElement('br'));
      }
      if (results) {
        const table = document.createElement('table');
        for (const result of results) {
          const row = table.insertRow(-1);
          const cell = row.insertCell(-1);
          const [anchor, span] = makeResultParts(result);
          cell.appendChild(anchor);
          const cell2 = row.insertCell(-1);
          cell2.appendChild(span);
        }
        resultsDiv.appendChild(table);
      }
      return true;
    };

Instala esta devolución de llamada en window.__gcse:

  window.__gcse || (window.__gcse = {});
    window.__gcse.searchCallbacks = {
      web: {
        ready: myResultsReadyCallback,
      },
    };
  <script async
  src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>

Al igual que con la devolución de llamada de inicio de la búsqueda, lo anterior es una de las muchas formas de colocar la devolución de llamada en el objeto __gcse.

Devolución de llamada renderizada de los resultados de la búsqueda de imágenes o web

Estas devoluciones de llamada se invocan inmediatamente antes de que el JavaScript del Elemento de búsqueda renderice el pie de página. Entre los casos de uso de ejemplo, se incluiría una devolución de llamada que agrega contenido de resultados que el elemento de búsqueda no muestra, como una casilla de verificación Guardar o información que no se renderiza automáticamente, o una devolución de llamada que agrega botones Para obtener más información.

Si una devolución de llamada de resultados renderizados necesita información que estaba en los parámetros promos y results de la devolución de llamada de resultados listos, puede pasarla entre ellos, de la siguiente manera:

callback(gname, query, promoElts, resultElts);
gname
Cadena de identificación del elemento de búsqueda
query
Cadena de búsqueda de
.
promoElts
un array de los elementos del DOM que contienen promociones.
resultElts
: Un array de los elementos del DOM que contienen resultados.

No hay valor de retorno.

Ejemplo de devolución de llamada de resultados renderizados

La devolución de llamada de resultsRendered de ejemplo en Devolución de llamada de ejemplo de resultados renderizados agrega una casilla de verificación Keep ficticia a cada promoción y resultado.

Ejemplo de devolución de llamada de resultados renderizados
myWebResultsRenderedCallback = function(name, q, promos, results) {
    for (const div of promos.concat(results)) {
      const innerDiv = document.createElement('div');
      innerDiv.appendChild(document.createTextNode('Keep: '));
      const checkBox = document.createElement('input');
      checkBox.type = 'checkbox';
      checkBox.name = 'save';
      innerDiv.appendChild(checkBox);
      div.insertAdjacentElement('afterbegin', innerDiv);
    }
  };

Instala esta devolución de llamada en window.__gcse:

window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
  web: {
    rendered: 'myWebResultsRenderedCallback',
  },
};
  <script async
    src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>

Si la devolución de llamada de resultados renderizados necesita información que se pasó a la devolución de llamada de resultados listos, puede pasar esos datos entre las devoluciones de llamada. En el siguiente ejemplo, se muestra una de las muchas formas de pasar un valor de calificación de richSnippet desde la devolución de llamada de resultados listos a la devolución de llamada de resultados renderizados.

Ejemplo de devolución de llamada de Results Ready que coopera con la devolución de llamada de Results Rendered
const makeTwoPartCallback = () => {
  let saveForRenderCallback;
  const readyCallback = (name, q, promos, results, resultsDiv) =>
  {
    saveForRenderCallback = [];
    for (const result of results) {
      const {
        richSnippet: {
          answer = []
        } = {},
      } = result;
      const firstAnswer = answer[0];
      if (firstAnswer) {
        const upVotes = firstAnswer['upvotecount'];
        if (upVotes) {
          saveForRenderCallback.push(
            {upvotes: parseInt(upVotes, 10)}
          );
          continue;
        }
      }
      saveForRenderCallback.push({});
    }
  };
  const renderedCallback = (name, q, promos, results) => {
    for (let i = 0; i < results.length; ++i) {
      const div = results[i];
      const votes = saveForRenderCallback[i]['upvotes'];
      if (votes) {
        const innerDiv = document.createElement('div');
        innerDiv.innerHTML = '<b>Upvotes: ' + votes + '</b>';
         div.insertAdjacentElement('afterbegin', innerDiv);
      }
    }
  };
  return {readyCallback, renderedCallback};
};
Instala esta devolución de llamada con un código como este mientras configuras __gcse:
const {
  readyCallback: webResultsReadyCallback,
  renderedCallback: webResultsRenderedCallback,
} = makeTwoPartCallback();
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
  web: {
    ready: webResultsReadyCallback,
    rendered: webResultsRenderedCallback,
  },
};
  <script async
  src="https://cse.google.com/cse.js?cx=000888210889775888983:kdroeu4mwju"></script>
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
Ejemplo de devolución de llamada de renderización de resultados: Apertura de tipos de archivos específicos en una pestaña o ventana nueva

En el siguiente ejemplo de devolución de llamada, se pueden modificar los vínculos de los resultados de la búsqueda después de que se renderizan para abrir un archivo específico en una pestaña o página nueva en lugar de la ventana actual (por ejemplo, PDF, Excel o Word). Esto mejora la experiencia de navegación cuando los usuarios no quieren abrir un archivo en la misma ventana y se alejan de la página de resultados.

En este ejemplo de devolución de llamada, se identifican los vínculos a archivos PDF en los resultados de la búsqueda y se establece el atributo target="_blank" en los vínculos a archivos PDF para que se abran en una pestaña nueva. Se usa un MutationObserver para controlar de forma dinámica los resultados nuevos si se actualiza la página. Nota: Puedes reemplazar .pdf en handleSearchResults por cualquier otro tipo de archivo según tus necesidades.

Este ejemplo de devolución de llamada no funciona en los diseños de Google Hosted ni de Overlay.

Cómo abrir tipos de archivos específicos en una pestaña o ventana nueva
function handleSearchResults() {
  const links = document.querySelectorAll('.gsc-results .gs-title');
  links.forEach(link => {
    const url = link.href;
    if (url?.toLowerCase().endsWith('.pdf')) {
      link.setAttribute('target', '_blank');
    }
  });
}

const myWebResultsRenderedCallback = () => {
  // Call handleSearchResults when results are rendered
  handleSearchResults();
  // Set up a MutationObserver to handle subsequent updates to the results
  const observer = new MutationObserver(handleSearchResults);
  const searchResultsContainer = document.querySelector('.gsc-results');
  if (searchResultsContainer) {
    observer.observe(searchResultsContainer, {
      childList: true,
      subtree: true
    });
  } else {
    console.log('No Results.');
  }
};

Instala esta devolución de llamada en window.__gcse:

window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
  web: {
    rendered: myWebResultsRenderedCallback,
  },
};
  <script async
    src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>

Más ejemplos de devoluciones de llamada

Puedes encontrar ejemplos adicionales de devoluciones de llamada en el documento More Callback Examples.

Propiedades de promoción y resultado

Con la notación de JSDoc, estas son las propiedades de los objetos promotion y result. Aquí, enumeramos todas las propiedades que podrían estar presentes. La presencia de muchas de las propiedades depende de los detalles de la promoción o del resultado de la búsqueda.

Propiedades de la promoción
{
  content: string,
  image: {
    height: number,
    url: string,
    width: number,
  },
  title: string,
  url: string,
  visibleUrl: string,
}
Propiedades del objeto Result
{
  content: string,
  contentNoFormatting: string,
  contextUrl: string, // For image search results only
  fileFormat: string,
  image: { // For image search reseults only
    height: number,
    url: string,
    width: number,
  },
  perResultLabels: !Array<{
    anchor: string,
    label: string,
    labelWithOp: string,
  }>,
  richSnippet: !Array<!Object>, // For web search results only
  thumbnailImage: {
    height: number,
    url: string,
    width: number,
  },
  title: string,
  titleNoFormatting: string,
  url: string,
  visibleUrl: string,
}

richSnippet en results tiene el tipo flexible de un array de objetos. Los valores de las entradas de este array se controlan con los datos estructurados que se encuentran en la página web para cada resultado de la búsqueda. Por ejemplo, un sitio web de opiniones podría incluir datos estructurados que agreguen esta entrada de array a richSnippet:

'review': {
  'ratingstars': '3.0',
  'ratingcount': '1024',
},

API de Programmable Search Element Control (V2)

El objeto google.search.cse.element publica las siguientes funciones estáticas:

Función Descripción
.render(componentConfig, opt_componentConfig) Renderiza un elemento de búsqueda.

Parámetros

Nombre Descripción
componentConfig Es la configuración de un componente de elemento de Programmable Search. Especifica lo siguiente:
  • div (cadena|Element): Es el id del <div> o el elemento div en el que se renderizará el Elemento de Búsqueda Programable.
  • tag (cadena): Es el tipo de componente(s) que se renderizarán. (Cuando se proporciona opt_componentConfig, el valor del atributo tag debe ser searchbox). Los valores permitidos son los siguientes:
    • search: Un cuadro de búsqueda y resultados de la búsqueda que se muestran juntos
    • searchbox: Es un componente de cuadro de búsqueda de un elemento de Búsqueda Programable.
    • searchbox-only: Es un cuadro de búsqueda independiente que se combinará con un bloque de resultados de la búsqueda especificado por opt_componentConfig en un diseño de dos columnas.
    • searchresults-only: Es un bloque independiente de resultados de la búsqueda. Las búsquedas se activan mediante un parámetro de búsqueda incorporado en una URL o mediante la ejecución programática.
  • gname (cadena): (Opcional) Es un nombre único para este componente. Si no se proporciona, el Motor de Búsqueda Programable generará automáticamente un gname.
  • attributes (objeto): Son atributos opcionales en forma de un par clave-valor. Atributos admitidos:
opt_componentConfig Opcional. Es el segundo argumento de configuración del componente. Se usa en el modo TWO_COLUMN para proporcionar el componente searchresults. Especifica lo siguiente:
  • div (cadena): Es el id del <div> o el elemento div en el que se renderizará el elemento.
  • tag (cadena): Es el tipo de componente(s) que se renderizarán. Cuando se proporciona opt_componentConfig, el valor del atributo tag debe ser searchresults. Además, el valor del atributo tag de componentConfig debe ser searchbox.
  • gname (cadena): (Opcional) Es un nombre único para este componente. Si no se proporciona, el Motor de Búsqueda Programable generará automáticamente un gname para este componente. Si se proporciona, debe coincidir con el gname en componentConfig.
  • attributes (objeto): Son atributos opcionales en forma de un par clave-valor. Atributos admitidos.
.go(opt_container) Renderiza todas las etiquetas o clases de Search Element en el contenedor especificado.

Parámetros

Nombre Descripción
opt_container Es el contenedor que incluye los componentes del Elemento de búsqueda que se renderizarán. Especifica el ID del contenedor (cadena) o el elemento mismo. Si se omite, se renderizarán todos los componentes de Programmable Search Element dentro de la etiqueta body de la página.
.getElement(gname) Obtiene el objeto del elemento por gname. Si no se encuentra, devuelve un valor nulo.

El objeto element que se devuelve tiene los siguientes atributos:

  • gname: Es el nombre del objeto del elemento. Si no se proporciona, el Motor de Búsqueda Programable generará automáticamente un gname para el objeto. Más información
  • type: Es el tipo de elemento.
  • uiOptions: Son los atributos finales que se usan para renderizar el elemento.
  • execute: function(string): Ejecuta una búsqueda programática.
  • prefillQuery: function(string): Precompleta el cuadro de búsqueda con una cadena de búsqueda sin ejecutar la búsqueda.
  • getInputQuery: function(): Obtiene el valor actual que se muestra en el cuadro de entrada.
  • clearAllResults: function(): Borra el control ocultando todo, excepto el cuadro de búsqueda, si lo hay.

El siguiente código ejecuta la búsqueda "noticias" en el elemento de búsqueda "element1":

var element = google.search.cse.element.getElement('element1');
            element.execute('news');
.getAllElements() Devuelve un mapa de todos los objetos de elementos creados correctamente, con la clave gname.