API Programmable Search Element Control

É possível incorporar componentes do Mecanismo de Pesquisa Programável (caixas de pesquisa e páginas de resultados da pesquisa) nas suas páginas da Web e outros aplicativos da Web usando marcação HTML. Esses elementos do Mecanismo de Pesquisa Programável consistem em componentes renderizados com base nas configurações armazenadas pelo servidor da Pesquisa programável, além de personalizações feitas por você.

Todo o JavaScript é carregado de forma assíncrona, o que permite que a página da Web continue sendo carregada enquanto o navegador busca o JavaScript do Mecanismo de Pesquisa Programável.

Introdução

Este documento fornece um modelo básico para adicionar elementos do Mecanismo de Pesquisa Programável à sua página da Web, além de explicações sobre os componentes configuráveis e a API JavaScript flexível do elemento.

Escopo

Este documento descreve como usar as funções e propriedades específicas da API Programmable Search Engine Control.

Compatibilidade com navegadores

A lista de navegadores compatíveis com o Mecanismo de Pesquisa Programável pode ser encontrada aqui.

Público

Esta documentação é destinada a desenvolvedores que querem adicionar a funcionalidade da Pesquisa Programável do Google às páginas deles.

Elementos da Pesquisa programável

Você pode usar a marcação HTML para adicionar um Programmable Search Element à sua página. Cada elemento consiste em pelo menos um componente: uma caixa de pesquisa, um bloco de resultados da pesquisa ou ambos. A caixa de pesquisa aceita entradas do usuário de qualquer uma das seguintes maneiras:

  • Uma consulta de pesquisa digitada no campo de entrada de texto
  • Uma string de consulta incorporada em um URL
  • Execução programática

Além disso, o bloco de resultados da pesquisa aceita entradas das seguintes maneiras:

  • Uma string de consulta incorporada em um URL
  • Execução programática

Os seguintes tipos de elementos de pesquisa programável estão disponíveis:

Tipo de elemento Componentes Descrição
padrão <div class="gcse-search"> Uma caixa de pesquisa e resultados da pesquisa mostrados no mesmo <div>.
duas colunas <div class="gcse-searchbox"> e <div class="gcse-searchresults"> Um layout de duas colunas com resultados de pesquisa de um lado e uma caixa de pesquisa do outro. Se você planeja inserir vários elementos no modo de duas colunas na sua página da Web, use o atributo gname para parear uma caixa de pesquisa com um bloco de resultados da pesquisa.
searchbox-only <div class="gcse-searchbox-only"> Uma caixa de pesquisa independente.
searchresults-only <div class="gcse-searchresults-only"> Um bloco independente de resultados da pesquisa.

Você pode adicionar quantos elementos de pesquisa válidos quiser à sua página da Web. No modo de duas colunas, todos os componentes necessários (uma caixa de pesquisa e um bloco de resultados da pesquisa) precisam estar presentes.

Confira um exemplo de um elemento de pesquisa simples:

<!-- 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>

Combinar diferentes opções de layout usando elementos da Pesquisa programável

As seguintes opções de layout estão disponíveis na página "Aparência" do painel de controle do Mecanismo de Pesquisa Programável. Confira algumas diretrizes gerais sobre como criar opções de layout usando elementos de pesquisa programável. Para ver uma demonstração de qualquer uma dessas opções, clique no link.

Opção Componentes
Largura total <div class="gcse-search">
Compacta <div class="gcse-search">
Duas colunas <div class="gcse-searchbox">, <div class="gcse-searchresults">
Duas páginas <div class="gcse-searchbox-only"> na primeira página, <div class="gcse-searchresults-only"> (ou outros componentes) na segunda página.
Apenas resultados <div class="gcse-searchresults-only">
Hospedado pelo Google <div class="gcse-searchbox-only">

Mais informações sobre as opções de layout.

Personalizar elementos da Pesquisa programável

Para personalizar cores, fontes ou estilo de link, acesse a página "Aparência" do seu mecanismo de pesquisa programável.

Você pode usar atributos opcionais para substituir as configurações criadas no painel de controle do Mecanismo de Pesquisa Programável. Isso permite criar uma experiência de pesquisa específica para cada página. Por exemplo, o código a seguir cria uma caixa de pesquisa que abre uma página de resultados (http://www.example.com?search=lady+gaga) em uma nova janela. O valor do atributo queryParameterName, junto com a string de consulta do usuário, é usado para criar o URL de resultados.

O atributo queryParameterName tem o prefixo data-. Esse prefixo é obrigatório para todos os atributos.

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

Se você usou o painel de controle do Mecanismo de Pesquisa Programável para ativar recursos como preenchimento automático ou refinamentos, use atributos para personalizar esses recursos. As personalizações especificadas usando esses atributos substituem as configurações feitas no painel de controle. O exemplo a seguir cria um elemento de pesquisa de duas colunas com os seguintes recursos:

  • O gerenciamento do histórico está ativado
  • O número máximo de preenchimentos automáticos mostrados é definido como 5
  • Os refinamentos são mostrados como links.

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

Atributos compatíveis

Atributo Tipo Descrição Componente
Geral
gname String (Opcional) Um nome para o objeto "Elemento de pesquisa". Um nome é usado para recuperar um componente associado por nome ou para parear um componente searchbox com um componente searchresults. Se não for fornecido, o Mecanismo de Pesquisa Programável vai gerar automaticamente um gname com base na ordem dos componentes na página da Web. Por exemplo, o primeiro searchbox-only sem nome tem o gname "searchbox-only0", o segundo tem o gname "seachbox-only1" e assim por diante. O gname gerado automaticamente para um componente em layout de duas colunas será two-column. O exemplo a seguir usa o gname storesearch para vincular um componente searchbox a um componente searchresults:
<div class="gcse-searchbox" data-gname="storesearch"></div>
<div class="gcse-searchresults" data-gname="storesearch"></div>

Ao recuperar um objeto, se mais de um componente tiver o mesmo gname, o Mecanismo de Pesquisa Programável vai usar o último componente na página.

Qualquer
autoSearchOnLoad Booleano Especifica se uma pesquisa deve ser executada pela consulta incorporada ao URL da página que está sendo carregada. Uma string de consulta precisa estar presente no URL para executar a pesquisa automática. Padrão: true. Qualquer
enableHistory Booleano Se true, ativa o gerenciamento do histórico para os botões "Voltar" e "Avançar" do navegador. Assista uma demonstração.

caixa de pesquisa

searchbox-only

queryParameterName String O nome do parâmetro de consulta, por exemplo, q (padrão) ou query. Ele será incorporado ao URL (por exemplo, http://www.example.com?q=lady+gaga). Especificar apenas o nome do parâmetro de consulta não aciona a pesquisa automática no carregamento. Uma string de consulta precisa estar presente no URL para executar a pesquisa automática. Qualquer
resultsUrl URL O URL da página de resultados. O padrão é a página hospedada pelo Google. searchbox-only
newWindow Booleano Especifica se a página de resultados é aberta em uma nova janela. Padrão: false. searchbox-only
ivt Booleano

Esse parâmetro permite fornecer um booleano que informa ao Google que você quer permitir anúncios que usam armazenamento local e de cookies exclusivo para tráfego inválido no tráfego com ou sem consentimento.

true Quando esse parâmetro não está presente ou você o define como "true", definimos um cookie exclusivo para tráfego inválido e usamos o armazenamento local apenas no tráfego com consentimento.

false Quando você define esse parâmetro como "false", definimos um cookie exclusivo para tráfego inválido e usamos o armazenamento local no tráfego com e sem consentimento.

Padrão: false

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

searchresults

searchresults-only

mobileLayout String

Especifica se os estilos de layout para dispositivos móveis devem ser usados em aparelhos celulares.

enabled Usa o layout para dispositivos móveis apenas em dispositivos móveis.

disabled Não usa o layout para dispositivos móveis em nenhum dispositivo.

forced Usa o layout para dispositivos móveis em todos os dispositivos.

Padrão: enabled

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

Qualquer
Preenchimento automático
enableAutoComplete Booleano Disponível apenas se o preenchimento automático estiver ativado no painel de controle do Mecanismo de Pesquisa Programável. true ativa o preenchimento automático. Qualquer
autoCompleteMaxCompletions Número inteiro O número máximo de preenchimentos automáticos a serem mostrados.

caixa de pesquisa

searchbox-only

autoCompleteMaxPromotions Número inteiro O número máximo de promoções a serem mostradas no preenchimento automático.

caixa de pesquisa

searchbox-only

autoCompleteValidLanguages String Lista separada por vírgulas de idiomas em que o preenchimento automático deve ser ativado. Idiomas aceitos.

caixa de pesquisa

searchbox-only

Refinamentos
defaultToRefinement String Disponível apenas se os refinamentos foram criados no painel de controle do Mecanismo de Pesquisa Programável. Especifica o rótulo de refinamento padrão a ser mostrado.Observação: esse atributo não é compatível com o layout hospedado pelo Google. Qualquer
refinementStyle String Os valores aceitáveis são tab (padrão) e link. link só é compatível se a pesquisa de imagens estiver desativada ou se ela estiver ativada, mas a pesquisa na Web estiver desativada.

searchresults

searchresults-only

Pesquisa de imagens
enableImageSearch Booleano Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Se true, ativa a pesquisa por imagens. Os resultados de imagens vão aparecer em uma guia separada.

searchresults

searchresults-only

defaultToImageSearch Booleano Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Se true, a página de resultados da pesquisa vai mostrar os resultados da pesquisa de imagens por padrão. Os resultados da Web vão estar disponíveis em uma guia separada.

Qualquer
imageSearchLayout String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Especifica o layout da página de resultados da pesquisa de imagens. Os valores aceitos são classic, column ou popup.

searchresults

searchresults-only

imageSearchResultSetSize Número inteiro, string Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Especifica o tamanho máximo do conjunto de resultados da pesquisa de imagens. Por exemplo, large, small, filtered_cse, 10.

Qualquer
image_as_filetype String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Restringe os resultados a arquivos de uma extensão especificada.

As extensões aceitas são jpg, gif, png, bmp, svg, webp, ico e raw.

Qualquer

image_as_oq String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Filtra os resultados da pesquisa usando a expressão lógica OR.

Exemplo de uso se você quiser resultados da pesquisa que incluam "termo1" ou "termo2":<div class="gcse-search" data-image_as_oq="term1 term2"></div>

Qualquer

image_as_rights String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Filtros com base no licenciamento.

Os valores aceitos são cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived e combinações deles.

Consulte combinações típicas.

Qualquer

image_as_sitesearch String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Restringe os resultados a páginas de um site específico.

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

Qualquer

image_colortype String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Restringe a pesquisa a imagens em preto e branco (mono), em escala de cinza ou coloridas. Os valores aceitos são mono, gray, color.

Qualquer

image_cr String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Restringe os resultados da pesquisa a documentos originários de um país específico.

Valores compatíveis

Qualquer

image_dominantcolor String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Restringe a pesquisa a imagens de uma cor dominante específica. Os valores aceitos são red, orange, yellow, green, teal, blue, purple, pink, white, gray, black e brown.

Qualquer

image_filter String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Filtra automaticamente os resultados da pesquisa.

Valores aceitos: 0/1

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

Qualquer

image_gl String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável. Aumenta os resultados da pesquisa cujo país de origem corresponde ao valor do parâmetro.

Valores compatíveis

Qualquer

image_size String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Retorna imagens de um tamanho especificado, que pode ser um dos seguintes: icon, small, medium, large, xlarge, xxlarge ou huge.

Qualquer

image_sort_by String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Classifica os resultados usando a data ou outro conteúdo estruturado.

Para classificar por relevância, use uma string vazia (image_sort_by="").

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

Qualquer

image_type String Disponível apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

Restringe a pesquisa a imagens de um tipo específico. Os valores aceitos são clipart (Clip art), face (Rostos de pessoas), lineart (Desenhos lineares), stock (Fotos de banco de imagens), photo (Fotografias) e animated (GIFs animados).

Qualquer

Pesquisa na Web
disableWebSearch Booleano Se true, desativa a pesquisa na Web. Normalmente usado apenas se a pesquisa de imagens estiver ativada no painel de controle do Mecanismo de Pesquisa Programável.

searchresults

searchresults-only

webSearchQueryAddition String Termos extras adicionados à consulta de pesquisa usando a expressão lógica OR.

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

Qualquer
webSearchResultSetSize Número inteiro, string O tamanho máximo do conjunto de resultados. Isso se aplica à pesquisa de imagens e à pesquisa na Web. O padrão depende do layout e de se o Mecanismo de Pesquisa Programável está configurado para pesquisar em toda a Web ou apenas em sites especificados. Os valores aceitáveis são:
  • Um número inteiro de 1 a 20
  • small: solicita um pequeno conjunto de resultados, geralmente quatro resultados por página.
  • large: solicita um grande conjunto de resultados, geralmente oito resultados por página.
  • filtered_cse: solicita até 10 resultados por página, para um máximo de 10 páginas ou 100 resultados.
Qualquer
webSearchSafesearch String Especifica se o SafeSearch está ativado para resultados da pesquisa na Web. Os valores aceitos são off e active. Qualquer
as_filetype String Restringe os resultados a arquivos de uma extensão especificada. Uma lista de tipos de arquivos indexáveis pelo Google pode ser encontrada na Central de Ajuda do Search Console.

Qualquer

as_oq String Filtra os resultados da pesquisa usando a expressão lógica OR.

Exemplo de uso se você quiser resultados da pesquisa que incluam "termo1" ou "termo2":<div class="gcse-search" data-as_oq="term1 term2"></div>

Qualquer
as_rights String Filtros com base no licenciamento.

Os valores aceitos são cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived e combinações deles.

Consulte https://wiki.creativecommons.org/wiki/CC_Search_integration (em inglês) para ver combinações típicas.

Qualquer

as_sitesearch String Restringe os resultados a páginas de um site específico.

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

Qualquer
cr String Restringe os resultados da pesquisa a documentos originários de um país específico.

Valores compatíveis

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

Qualquer
filter String Filtra automaticamente os resultados da pesquisa.

Valores aceitos: 0/1

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

Qualquer
gl String Aumenta os resultados da pesquisa cujo país de origem corresponde ao valor do parâmetro.

Isso só funciona em conjunto com a configuração valor do idioma.

Valores compatíveis

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

Qualquer
lr String Restringe os resultados da pesquisa a documentos escritos em um idioma específico.

Valores compatíveis

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

Qualquer
sort_by String Classifica os resultados usando a data ou outro conteúdo estruturado. O valor do atributo precisa ser uma das opções fornecidas nas configurações de Ordenação de resultados do mecanismo de pesquisa programável.

Para classificar por relevância, use uma string vazia (sort_by="").

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

Qualquer
Resultados da pesquisa
enableOrderBy Booleano Permite a classificação dos resultados por relevância, data ou marcador. Qualquer
linkTarget String Define o destino do link. Padrão: _blank.

searchresults

searchresults-only

noResultsString String Especifica o texto padrão mostrado quando nenhum resultado corresponde à consulta. A string de resultado padrão pode ser usada para mostrar uma string localizada em todos os idiomas compatíveis, enquanto a personalizada não pode.

searchresults

searchresults-only

resultSetSize Número inteiro, string O tamanho máximo do conjunto de resultados. Por exemplo, large, small, filtered_cse, 10. O padrão depende do layout e se o mecanismo está configurado para pesquisar em toda a Web ou apenas em sites específicos. Qualquer
safeSearch String Especifica se o SafeSearch está ativado para pesquisas na Web e de imagens. Os valores aceitos são off e active. Qualquer

Callbacks

Diagrama de sequência de callback
Diagrama de sequência de callbacks do JavaScript do elemento de pesquisa

Os callbacks oferecem suporte ao controle detalhado da inicialização e dos processos de pesquisa de elementos de pesquisa. Eles são registrados com o JavaScript do elemento de pesquisa pelo objeto global __gcse. Registrar retornos de chamada ilustra o registro de todos os retornos de chamada compatíveis.

Registrar callbacks

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

O callback de inicialização

O callback de inicialização é invocado antes que o JavaScript do elemento de pesquisa renderize os elementos de pesquisa no DOM. Se parsetags estiver definido como explicit em __gcse, o JavaScript do elemento de pesquisa deixará a renderização dos elementos de pesquisa para o callback de inicialização (conforme mostrado em Registrar callbacks). Isso pode ser usado para selecionar elementos a serem renderizados ou para adiar a renderização até que sejam necessários. Ele também pode substituir os atributos dos elementos. Por exemplo, pode transformar uma caixa de pesquisa configurada pelo painel de controle ou por atributos HTML para a pesquisa na Web padrão em uma caixa de pesquisa de imagens ou especificar que as consultas enviadas por um formulário do Mecanismo de Pesquisa Programável sejam executadas em um elemento somente de resultados da pesquisa. Confira uma demonstração.

A função do callback de inicialização é controlada pelo valor da propriedade parsetags de __gcse.

  • Se o valor for onload, o JavaScript do elemento de pesquisa renderizará todos os elementos de pesquisa na página automaticamente. O callback de inicialização ainda é invocado, mas não é responsável por renderizar os elementos de pesquisa.
  • Se o valor for explicit, o JavaScript do elemento de pesquisa não vai renderizar elementos de pesquisa. O callback pode renderizar os elementos de forma seletiva usando a função render() ou renderizar todos os elementos de pesquisa com a função go().

O código a seguir demonstra como renderizar uma caixa de pesquisa, junto com os resultados da pesquisa, em um div, usando a tag de análise explicit e o callback de inicialização:

Exemplo de callback de inicialização

Precisamos incluir um <div> com um valor de ID onde queremos o código do elemento de pesquisa:

    <div id="test"></div>
Adicione este JavaScript depois do <div>. Ele faz referência a test, o id que usamos para identificar o <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
};

Inclua este HTML para começar a carregar o elemento de pesquisa. Substitua o valor cx na cláusula src pelo seu próprio cx.

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

Callbacks de pesquisa

O JavaScript do elemento de pesquisa oferece suporte a seis retornos de chamada que operam no fluxo de controle de pesquisa. Os callbacks de pesquisa vêm em pares: um callback de pesquisa na Web e um callback de pesquisa de imagens correspondente:

  • Pesquisa em andamento
    • Para pesquisa de imagens
    • Para pesquisa na Web
  • Resultados prontos
    • Para pesquisa de imagens
    • Para pesquisa na Web
  • Resultados renderizados
    • Para pesquisa de imagens
    • Para pesquisa na Web

Assim como o callback de inicialização,os callbacks de pesquisa são configurados usando entradas no objeto __gcse. Isso acontece quando o JavaScript do elemento de pesquisa é iniciado. As modificações em __gcse após a inicialização são ignoradas.

Cada um desses callbacks recebe o gName do elemento de pesquisa como um argumento. O gname é útil quando uma página contém mais de uma pesquisa. Atribua a um elemento de pesquisa valores gname usando o atributo data-gname:

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

Se o HTML não identificar o gname, o JavaScript do elemento de pesquisa vai gerar um valor que vai permanecer consistente até que o HTML seja modificado.

Callback de início da pesquisa de imagens/na Web

Os callbacks de início da pesquisa são invocados imediatamente antes de o JavaScript do elemento de pesquisa solicitar resultados da pesquisa do servidor. Um exemplo de caso de uso seria usar a hora local do dia para controlar mudanças na consulta.

searchStartingCallback(gname, query)
gname
String de identificação do elemento de pesquisa
query
Valor
inserido pelo usuário (possivelmente modificado pelo JavaScript do elemento de pesquisa).

O callback retorna o valor que deve ser usado como consulta para essa pesquisa. Se ela retornar uma string vazia, o valor de retorno será ignorado e o autor da chamada usará a consulta sem modificações.

Outra opção é colocar a função de callback no objeto __gcse ou adicionar dinamicamente o callback ao objeto com JavaScript:

window.__gcse['searchCallbacks']['web']['starting'] = function(gname, query) {...};
Exemplo de callback de início de pesquisa

O exemplo de callback de início de pesquisa em Exemplo de callback de início de pesquisa adiciona morning ou afternoon à consulta, dependendo da hora do dia.

Exemplo de callback de início de pesquisa
    const myWebSearchStartingCallback = (gname, query) => {
      const hour = new Date().getHours();
      return query + (hour < 12 ? ' morning' : ' afternoon');
    };
    window.myImageSearchStartingCallbackName = myWebSearchStartingCallback;

Instale esse callback em 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>

Callback pronto para resultados da pesquisa de imagens/na Web

Esses callbacks são invocados imediatamente antes de o JavaScript do elemento de pesquisa renderizar promoções e resultados. Um exemplo de caso de uso seria um callback que renderiza promoções e resultados em um estilo que não pode ser especificado com a personalização normal.

resultsReadyCallback(gname, query, promos, results, div)
gname
String de identificação do elemento de pesquisa
query
consulta que gerou esses resultados
promos
uma matriz de objetos de promoção, que correspondem às promoções correspondentes à consulta do usuário. Consulte a definição do objeto de promoção.
results
uma matriz de objetos de resultado. Consulte a definição do objeto de resultado.
div
uma div HTML posicionada no DOM em que o elemento de pesquisa normalmente coloca promoções e resultados da pesquisa. Normalmente, o JavaScript do elemento de pesquisa processa o preenchimento dessa div, mas o callback pode interromper a renderização automática de resultados e usar esse div para renderizar os resultados por conta própria.

Se esse callback retornar um valor true, o JavaScript do elemento de pesquisa vai pular para o trabalho de rodapé da página.

Exemplo de callback de resultados prontos

O exemplo de callback resultsReady em Exemplo de callback de resultados prontos substitui a apresentação padrão de promoções e resultados por uma substituição muito simples.

Exemplo de callback de resultados prontos
    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;
    };

Instale esse callback em 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>

Assim como o callback de início da pesquisa, o exemplo acima é uma das muitas maneiras de colocar o callback no objeto __gcse.

Callback renderizado de resultados da pesquisa de imagens/na Web

Esses callbacks são invocados imediatamente antes de o JavaScript do elemento de pesquisa renderizar o rodapé da página. Exemplos de casos de uso incluem um callback que adiciona conteúdo de resultado que o elemento de pesquisa não mostra, como uma caixa de seleção Salvar ou informações que não são renderizadas automaticamente, ou um callback que adiciona botões Mais informações.

Se um callback de resultados renderizados precisar de informações que estavam nos parâmetros promos e results do callback de resultados prontos, ele poderá transmitir essas informações entre eles, assim:

callback(gname, query, promoElts, resultElts);
gname
String de identificação do elemento de pesquisa
query
string de pesquisa.
promoElts
: uma matriz dos elementos DOM que contêm promoções.
resultElts
: uma matriz dos elementos DOM que contêm resultados.

Não há valor de retorno.

Exemplo de callback de renderização de resultados

O callback de exemplo resultsRendered em Exemplo de callback de renderização de resultados adiciona uma caixa de seleção Manter fictícia a cada promoção e resultado.

Exemplo de callback de renderização de resultados
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);
    }
  };

Instale esse callback em 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>

Se o callback de resultados renderizados precisar de informações transmitidas ao callback de resultados prontos, ele poderá transmitir esses dados entre os callbacks. O exemplo a seguir mostra uma das várias maneiras de transmitir um valor de classificação de richSnippet do callback de resultados prontos para o callback de resultados renderizados.

Exemplo de callback "Resultados prontos" cooperando com o callback "Resultados renderizados"
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};
};
Instale esse callback usando um código como este ao configurar __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>
Exemplo de callback de renderização de resultados: abrir tipos de arquivos específicos em uma nova guia/janela

O exemplo de callback a seguir pode modificar os links de resultados da pesquisa depois que eles são renderizados para abrir um arquivo específico em uma nova guia/página em vez da janela atual (por exemplo: PDF, Excel ou Word). Isso melhora a experiência de navegação quando os usuários não querem abrir um arquivo na mesma janela e sair da página de resultados.

Este exemplo de callback identifica links de PDF nos resultados da pesquisa e define o atributo target="_blank" nesses links para que eles sejam abertos em uma nova guia. Um MutationObserver é usado para processar dinamicamente novos resultados se a página for atualizada. Observação:você pode substituir .pdf em handleSearchResults por qualquer outro tipo de arquivo, de acordo com sua necessidade.

Este exemplo de callback não funciona em layouts hospedados e de sobreposição do Google.

Abrir tipos de arquivos específicos em uma nova guia/janela
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.');
  }
};

Instale esse callback em 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>

Mais exemplos de callback

Outros exemplos de callback podem ser encontrados no documento Mais exemplos de callback.

Propriedades de promoção e resultado

Usando a notação JSDoc, estas são as propriedades dos objetos promotion e result. Aqui, listamos todas as propriedades que podem estar presentes. A presença de muitas das propriedades depende dos detalhes da promoção ou do resultado da pesquisa.

Propriedades da promoção
{
  content: string,
  image: {
    height: number,
    url: string,
    width: number,
  },
  title: string,
  url: string,
  visibleUrl: string,
}
Propriedades do objeto de resultado
{
  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 em results tem o tipo solto de uma matriz de objetos. Os valores das entradas nessa matriz são controlados pelos dados estruturados encontrados na página da Web de cada resultado da pesquisa. Por exemplo, um site de avaliações pode incluir dados estruturados que adicionam esta entrada de matriz a richSnippet:

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

API Programmable Search Element Control (V2)

O objeto google.search.cse.element publica as seguintes funções estáticas:

Função Descrição
.render(componentConfig, opt_componentConfig) Renderiza um elemento de pesquisa.

Parâmetros

Nome Descrição
componentConfig A configuração de um componente de elemento de Pesquisa programável. Especifica o seguinte:
  • div (string|Element): o id do <div> ou o elemento div em que o elemento de Pesquisa Programável será renderizado.
  • tag (string): o tipo de componente(s) a serem renderizados. Quando opt_componentConfig é fornecido, o valor do atributo tag precisa ser searchbox. Os valores permitidos são:
    • search: uma caixa de pesquisa e resultados da pesquisa, exibidos juntos
    • searchbox: um componente de caixa de pesquisa de um elemento de pesquisa programável.
    • searchbox-only: uma caixa de pesquisa independente, que será combinada com um bloco de resultados da pesquisa especificado por opt_componentConfig em um layout de duas colunas.
    • searchresults-only: um bloco independente de resultados da pesquisa. As pesquisas são acionadas por um parâmetro de consulta incorporado a um URL ou por execução programática.
  • gname (string): (opcional) um nome exclusivo para esse componente. Se não for fornecido, o Mecanismo de Pesquisa Programável vai gerar automaticamente um gname.
  • attributes (objeto): atributos opcionais na forma de um par chave:valor. Atributos compatíveis.
opt_componentConfig Opcional. Segundo argumento de configuração do componente. Usado no modo TWO_COLUMN para fornecer o componente searchresults. Especifica o seguinte:
  • div (string): o id do <div> ou o elemento div em que o elemento será renderizado.
  • tag (string): o tipo de componente(s) a serem renderizados. Quando opt_componentConfig é fornecido, o valor do atributo tag precisa ser searchresults. Além disso, o valor do atributo tag de componentConfig precisa ser searchbox.
  • gname (string): (opcional) um nome exclusivo para esse componente. Se não for fornecido, o Mecanismo de Pesquisa Programável vai gerar automaticamente um gname para esse componente. Se fornecido, ele precisa corresponder ao gname em componentConfig.
  • attributes (objeto): atributos opcionais na forma de um par chave:valor. Atributos compatíveis.
.go(opt_container) Renderiza todas as tags/classes de elementos de pesquisa no contêiner especificado.

Parâmetros

Nome Descrição
opt_container O contêiner que contém os componentes do elemento de pesquisa a serem renderizados. Especifique o ID do contêiner (string) ou o próprio elemento. Se omitido, todos os componentes do Elemento de pesquisa programável dentro da tag body da página serão renderizados.
.getElement(gname) Recebe o objeto de elemento por gname. Se não for encontrado, retorne nulo.

O objeto element retornado tem os seguintes atributos:

  • gname: o nome do objeto de elemento. Se não for fornecido, o Mecanismo de Pesquisa Programável vai gerar automaticamente um gname para o objeto. Mais informações.
  • type: o tipo de elemento.
  • uiOptions: os atributos finais usados para renderizar o elemento.
  • execute - function(string): executa uma consulta programática.
  • prefillQuery - function(string): preenche a caixa de pesquisa com uma string de consulta sem executar a consulta.
  • getInputQuery - function(): recebe o valor atual exibido na caixa de entrada.
  • clearAllResults - function(): limpa o controle ocultando tudo, exceto a caixa de pesquisa, se houver.

O código a seguir executa a consulta "news" no elemento de pesquisa "element1":

var element = google.search.cse.element.getElement('element1');
            element.execute('news');
.getAllElements() Retorna um mapa de todos os objetos de elemento criados com sucesso, com chave gname.