Programmable Search Element Control API

您可以使用 HTML 標記,在網頁和其他網頁應用程式中嵌入程式化搜尋引擎元件 (搜尋框和搜尋結果網頁)。這些程式化搜尋引擎元素包含由程式化搜尋伺服器儲存的元件,以及您提供的所有自訂元件。

所有 JavaScript 都會以非同步方式載入,因此瀏覽器擷取到程式化搜尋引擎 JavaScript 時,網頁會繼續載入。

簡介

本文件提供基本的模型,可用於將網頁程式化搜尋引擎元素新增至網頁,以及元素可設定元件和彈性 JavaScript API 的說明。

範圍

本文說明如何使用 Promable Search Engine Control API 專屬的函式和屬性。

瀏覽器相容性

如要查看程式化搜尋引擎支援的瀏覽器清單,請按這裡

觀眾

這份文件的適用對象,是想將 Google 程式設計搜尋功能加入網頁的開發人員。

程式化搜尋元素

您可以使用 HTML 標記在網頁中加入程式化搜尋元素。每個元素都包含至少一個元件:搜尋框、搜尋結果區塊或兩者。搜尋框可透過下列任一方式接受使用者輸入內容:

  • 在文字輸入欄位中輸入搜尋查詢
  • 嵌入網址的查詢字串
  • 程式輔助執行

此外,搜尋結果區塊會透過下列方式接受輸入內容:

  • 嵌入網址的查詢字串
  • 程式輔助執行

你可以使用下列程式化搜尋元素類型:

元素類型 元件 說明
standard <div class="gcse-search"> 搜尋框和搜尋結果,會顯示在相同的 <div> 中。
兩欄 <div class="gcse-searchbox"><div class="gcse-searchresults"> 兩欄版面配置的搜尋結果,其中一側顯示搜尋結果,另一側顯示搜尋框。如果您打算在網頁的兩欄模式中插入多個元素,可以使用 gname 屬性將搜尋框與搜尋結果區塊配對。
僅限搜尋框 <div class="gcse-searchbox-only"> 獨立的搜尋框。
僅限搜尋結果 <div class="gcse-searchresults-only"> 單獨的搜尋結果區塊。

您可以在網頁中加入任意有效的搜尋元素。如果是雙資料欄模式,就必須顯示所有必要的元件 (搜尋框和搜尋結果區塊)。

以下是簡單的搜尋元素範例:

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

使用程式化搜尋元素編寫不同的版面配置選項

以下版面配置選項適用於「程式化搜尋引擎」控制台的「外觀與風格」頁面。以下提供一些關於使用程式化搜尋元素撰寫版面配置選項的一般準則。如要查看下列任一選項的示範,請按一下連結。

選項 元件
全形 <div class="gcse-search">
小巧 <div class="gcse-search">
兩欄 <div class="gcse-searchbox"><div class="gcse-searchresults">
兩頁 第一頁的<div class="gcse-searchbox-only">,第二頁 (<div class="gcse-searchresults-only">) 或其他元件。
只顯示結果 <div class="gcse-searchresults-only">
Google 代管 <div class="gcse-searchbox-only">

進一步瞭解版面配置選項。

自訂程式化搜尋元素

如要自訂顏色、字型或連結樣式,請前往程式化搜尋引擎的「外觀和風格」頁面。

您可以使用選用屬性來覆寫程式化搜尋引擎控制台中建立的設定。藉此建立特定網頁專屬體驗。 舉例來說,下列程式碼會開啟搜尋框,在新視窗中開啟搜尋結果頁面 (http://www.example.com?search=lady+gaga)。queryParameterName 屬性的值和使用者查詢字串可用來建立結果網址。

請注意,queryParameterName 屬性的前置字串是 data-。所有屬性均須提供此前置字元。

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

如果您使用程式化搜尋引擎控制台啟用自動完成修正等功能,可以使用屬性來自訂這些功能。您透過這些屬性指定的所有自訂設定會覆寫在控制台中所做的設定。以下範例會建立包含兩個特徵的雙欄「搜尋元素」:

  • 已啟用記錄管理功能
  • 顯示的自動查詢建議數量上限為 5 個
  • 分類標籤會以連結的形式顯示。

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

支援的屬性

屬性 類型 說明 元件
一般
gname 字串 (選擇性) Search Element 物件的名稱。名稱用於擷取名稱中的相關元件,或是將 searchbox 元件與 searchresults 元件配對。如未提供,程式化搜尋引擎會根據網頁元件的順序自動產生 gname。舉例來說,第一個未命名的 searchbox-onlygname「searchbox-only0」,而 gname 則為「seachbox-only1」,依此類推。請注意,在雙欄版面配置中,元件自動產生的 gnametwo-column。以下範例使用 gname storesearch 來連結 searchbox 元件與 searchresults 元件:
<div class="gcse-searchbox" data-gname="storesearch"></div>
<div class="gcse-searchresults" data-gname="storesearch"></div>

擷取物件時,如果有多個元件具有相同的 gname,程式化搜尋引擎就會使用網頁上的最後一個元件。

任何檔案
autoSearchOnLoad 布林值 指定是否要在載入的網頁網址中嵌入查詢。請注意,網址必須包含查詢字串,才能執行自動搜尋。預設值:true 任何檔案
enableHistory 布林值 如果設為 true,系統會啟用瀏覽器「上一頁」和「轉寄」按鈕的記錄管理功能。觀看示範影片。

搜尋框

僅限搜尋框

queryParameterName 字串 查詢參數名稱,例如 q (預設) 或 query。這會嵌入網址中 (例如 http://www.example.com?q=lady+gaga)。請注意,如果單獨指定查詢參數名稱,並不會在載入時觸發自動搜尋。查詢字串必須包含網址,才能執行自動搜尋。 任何檔案
resultsUrl 網址 結果網頁的網址。(預設值為 Google 代管的網頁)。 僅限搜尋框
newWindow 布林值 指定結果頁面會在新視窗中開啟。預設值:false 僅限搜尋框
personalizedAds 布林值

指定使用者是否已同意允許發布商與 Google 共用個人資訊,以用於個人化廣告。

true 傳回查詢指定的廣告,以及使用者的 Google Cookie 所指定的一些廣告。如果使用者位於歐盟地區,使用者必須先同意允許您的網站與 Google 共用個人資訊,以用於個人化廣告

false 僅傳回查詢指定的廣告。這不會傳回任何以使用者的 Google Cookie 指定的廣告。如果使用者已拒絕允許您的網站與 Google 共用個人資訊以用於個人化廣告,則您必須將此值設為 false

預設:true

使用範例:<div class="gcse-search" data-personalizedAds="false"></div>

搜尋結果

僅限搜尋結果

mobileLayout 字串

指定行動裝置是否應使用行動版面配置樣式。

enabled 僅適用於行動裝置。

disabled 不會使用任何裝置的行動裝置版面配置。

forced 使用所有裝置的行動裝置版面配置。

預設:enabled

使用範例:<div class="gcse-search" data-mobileLayout="disabled"></div>

任何檔案
自動完成
enableAutoComplete 布林值 必須先在程式化搜尋引擎控制台中啟用自動完成功能,才能使用這項功能。 true 會啟用自動完成功能。 任何檔案
autoCompleteMaxCompletions 整數 可顯示的自動查詢數量上限。

搜尋框

僅限搜尋框

autoCompleteMaxPromotions 整數 要在自動完成中顯示的促銷活動數量上限。

搜尋框

僅限搜尋框

autoCompleteValidLanguages 字串 包含要啟用自動完成功能的語言清單 (以半形逗號分隔)。 支援的語言。

搜尋框

僅限搜尋框

分類標籤
defaultToRefinement 字串 只有在程式化搜尋引擎控制台中建立分類標籤時才會顯示。指定要顯示的預設分類標籤。注意:Google 代管版面配置不支援這個屬性。 任何檔案
refinementStyle 字串 可接受的值為 tab (預設) 和 link。只有在停用圖片搜尋,或是已啟用圖片搜尋但已停用網頁搜尋功能時,系統才會支援 link

搜尋結果

僅限搜尋結果

圖片搜尋
enableImageSearch 布林值 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

如為 true,則啟用圖片搜尋功能。圖片結果會顯示在獨立的分頁中。

搜尋結果

僅限搜尋結果

defaultToImageSearch 布林值 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

如果為 true,搜尋結果網頁預設會顯示圖片搜尋結果。網頁結果會顯示在另一個分頁中。

任何檔案
imageSearchLayout 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

指定圖片搜尋結果網頁的版面配置。可接受的值為 classiccolumnpopup

搜尋結果

僅限搜尋結果

imageSearchResultSetSize 整數、字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

指定圖片搜尋的搜尋結果大小上限。例如:largesmallfiltered_cse10

任何檔案
image_as_filetype 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

將結果範圍限制在特定的副檔名內。

支援的擴充功能包括 jpggifpngbmpsvgwebpicoraw

任何檔案

image_as_oq 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

使用邏輯 OR 篩選搜尋結果。

如果想要系統顯示含有「term1」或「term2」的搜尋結果,請按照以下步驟操作:<div class="gcse-search" data-image_as_oq="term1 term2"></div>

任何檔案

image_as_rights 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

根據授權篩選。

支援的值為 cc_publicdomaincc_attributecc_sharealikecc_noncommercialcc_nonderived 和這些值組合。

請參閱一般組合

任何檔案

image_as_sitesearch 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

限制顯示特定網站的搜尋結果。

使用範例:<div class="gcse-search" data-image_as_sitesearch="example.com"></div>

任何檔案

image_colortype 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

限制搜尋範圍為黑白 (單色)、灰階或彩色圖片。支援的值為 monograycolor

任何檔案

image_cr 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

限制顯示來自特定國家/地區的文件。

支援的值

任何檔案

image_dominantcolor 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

限制搜尋特定主要顏色的圖片。 支援的值為 redorangeyellowgreentealbluepurplepinkwhitegrayblackbrown

任何檔案

image_filter 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

自動篩選搜尋結果。

支援的值:0/1

使用範例:<div class="gcse-search" data-image_filter="0"></div>

任何檔案

image_gl 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。強化來源國家/地區與參數值相符的搜尋結果。

支援的值

任何檔案

image_size 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

傳回指定大小的圖片,其中 1 為 iconsmallmediumlargexlargexxlargehuge.

任何檔案

image_sort_by 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

使用日期或其他結構化內容將結果排序。

如要按照關聯性排序,請使用空白字串 (image_sort_by=")。

使用範例:<div class="gcse-search" data-image_sort_by="date"></div>

任何檔案

image_type 字串 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。

僅搜尋特定類型的圖片。支援的值為 clipart (Clip Art)、face (臉孔臉孔)、lineart (線段)、stock (圖庫相片)、photo (相片) 和 animated (動畫)。

任何檔案

Google 網頁搜尋
disableWebSearch 布林值 如果設為 true,系統會停用網頁搜尋功能。通常必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能時。

搜尋結果

僅限搜尋結果

webSearchQueryAddition 字串 使用邏輯 OR 為搜尋查詢加入的額外字詞。

使用範例:<div class="gcse-search" data-webSearchQueryAddition="term1 term2"></div>

任何檔案
webSearchResultSetSize 整數、字串 結果集的大小上限。適用於圖片搜尋和網頁搜尋。預設選項取決於版面配置,以及程式化搜尋引擎是否設為搜尋整個網路或只搜尋特定網站。可接受的值如下:
  • 介於 1 到 20 之間的整數
  • small:要求小型搜尋結果,通常每個頁面有 4 筆結果。
  • large:要求大型結果集,通常每頁產生 8 筆結果。
  • filtered_cse:每頁要求最多 10 筆結果,最多 10 頁或 100 筆結果。
任何檔案
webSearchSafesearch 字串 指定是否要為網頁搜尋結果啟用安全搜尋。可接受的值為 offactive 任何檔案
as_filetype 字串 將結果範圍限制在特定的副檔名內。如要查看 Google 可建立索引的檔案類型清單,請前往 Search Console 說明中心

任何檔案

as_oq 字串 使用邏輯 OR 篩選搜尋結果。

如果你想查看含有「term1」或「term2」的搜尋結果,請按照以下步驟操作:<div class="gcse-search" data-as_oq="term1 term2"></div>

任何檔案
as_rights 字串 根據授權篩選。

支援的值為 cc_publicdomaincc_attributecc_sharealikecc_noncommercialcc_nonderived 和這些值組合。

如要查看典型的組合,請參閱 https://wiki.creativecommons.org/wiki/CC_Search_integration

任何檔案

as_sitesearch 字串 限制顯示特定網站的搜尋結果。

使用範例:<div class="gcse-search" data-as_sitesearch="example.com"></div>

任何檔案
cr 字串 限制顯示來自特定國家/地區的文件。

支援的值

使用範例:<div class="gcse-search" data-cr="countryFR"></div>

任何檔案
filter 字串 自動篩選搜尋結果。

支援的值:0/1

使用範例:<div class="gcse-search" data-filter="0"></div>

任何檔案
gl 字串 強化來源國家/地區與參數值相符的搜尋結果。

這個選項只能與語言值設定搭配使用。

支援的值

使用範例:<div class="gcse-search" data-gl="fr"></div>

任何檔案
lr 字串 限制顯示特定語言的文件搜尋結果。

支援的值

使用範例:<div class="gcse-search" data-lr="lang_fr"></div>

任何檔案
sort_by 字串 使用日期或其他結構化內容將結果排序。屬性值必須是程式化搜尋「結果排序」設定中提供的其中一個選項。

如要按照關聯性排序,請使用空白字串 (sort_by=")。

使用範例:<div class="gcse-search" data-sort_by="date"></div>

任何檔案
搜尋結果
enableOrderBy 布林值 啟用依關聯性、日期或標籤排序搜尋結果。 任何檔案
linkTarget 字串 設定連結目標。預設值:_blank

搜尋結果

僅限搜尋結果

noResultsString 字串 指定沒有與查詢相符的結果時顯示的預設文字。 預設結果字串可用於顯示所有支援語言的本地化字串,而自訂字串則不是。

搜尋結果

僅限搜尋結果

resultSetSize 整數、字串 結果集的大小上限。例如:largesmallfiltered_cse10。預設選項取決於版面配置,以及引擎是否設定為搜尋整個網路,還是只搜尋特定網站。 任何檔案
safeSearch 字串 指定是否針對網頁和圖片搜尋啟用 安全搜尋。可接受的值為 offactive 任何檔案

回呼

回呼序列圖
Search Element JavaScript 的回呼序列圖

回呼支援對搜尋元素初始化和搜尋程序的詳細控制。透過全域 __gcse 物件,使用搜尋元素 JavaScript 登錄這些變數。註冊回呼會說明所有支援回呼的註冊情形。

註冊回呼

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

初始化回呼

系統會先叫用初始化回呼,在 Search Element JavaScript 算繪 DOM 中的搜尋元素。如果在 __gcse 中將 parsetags 設為 explicit,Search Element JavaScript 會將搜尋元素轉譯為初始化回呼 (如註冊回呼所示)。這可用於選取要顯示的元素,或延後顯示元素,直到需要時才進行。還能覆寫元素屬性。舉例來說,這個控制台可以將搜尋框或 HTML 屬性設定的搜尋框預設為網頁圖片搜尋方塊,或者指定透過程式化的搜尋引擎提交的查詢,限定在僅限搜尋結果的元素中執行。 查看示範。

初始化回呼的角色是由 __gcseparsetags 屬性值控制。

  • 如果值為 onload,搜尋元素 JavaScript 會自動轉譯網頁上的所有搜尋元素。系統仍會叫用初始化回呼,但不會負責轉譯搜尋元素。
  • 如果值為 explicit,搜尋元素 JavaScript 就不會轉譯搜尋元素。回呼可能會使用 render() 函式選擇性轉譯,或使用 go() 函式算繪所有搜尋元素

下方程式碼示範如何使用 explicit 剖析標記和初始化回呼,在 div 中算繪搜尋框以及搜尋結果:

初始化回呼範例

我們需要加入 ID 值,讓 <div> 使用 Search Element 程式碼:

    <div id="test"></div>
<div> 後方加入這個 JavaScript。請注意,此參考 test 是用於識別 <div>id
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
};

加入這個 HTML 即可開始載入搜尋元素。將 src 子句中的 cx 值替換為自己的 cx

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

搜尋回呼

搜尋元素 JavaScript 支援在搜尋控制流程中執行的六個回呼。 搜尋回呼必須成對,即網頁搜尋回呼和相符的圖片搜尋回呼:

  • 即將開始搜尋
    • 圖片搜尋
    • 用於網頁搜尋
  • 結果出爐
    • 圖片搜尋
    • 用於網頁搜尋
  • 轉譯結果
    • 圖片搜尋
    • 用於網頁搜尋

如同初始化回呼,搜尋回呼是使用 __gcse 物件中的項目進行設定。這會發生在搜尋元素 JavaScript 開始時。忽略啟動後對 __gcse 的修改。

每個回呼都會將 Search Element 的 gName 做為引數傳遞。如果網頁含有多次搜尋,gname 就很實用。使用 data-gname 屬性為搜尋元素提供 gname 值:

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

如果 HTML 無法識別 gname,Search Element JavaScript 會產生一個值,直到修改 HTML 為止。

圖片/網頁搜尋啟動回呼

在 Search Element JavaScript 向伺服器要求搜尋結果之前,系統會立即叫用搜尋啟動回呼。例如,使用當地時間來控制查詢的變更。

searchStartingCallback(gname, query)
gname
搜尋元素的識別字串
query
使用者輸入的值 (可能會由搜尋元素 JavaScript 修改)。

回呼會傳回應做為此查詢的查詢使用的值。如果傳回空白字串,系統會忽略傳回值,而呼叫端會使用未經修改的查詢。

此外,您也可以將回呼函式放入 __gcse 物件,或使用 JavaScript 動態將回呼新增至物件:

window.__gcse['searchCallbacks']['web']['starting'] = function(gname, query) {...};
搜尋啟動回呼範例

搜尋啟動回呼範例中的範例搜尋啟動回呼範例會根據時段,在查詢中新增 morningafternoon

啟動搜尋回呼範例
    const myWebSearchStartingCallback = (gname, query) => {
      const hour = new Date().getHours();
      return query + (hour < 12 ? ' morning' : ' afternoon');
    };
    window.myImageSearchStartingCallbackName = myWebSearchStartingCallback;

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>

圖片/網頁搜尋結果就緒的回呼

系統會在搜尋元素 JavaScript 顯示促銷和結果之前,立即叫用這些回呼。其中一個使用案例是會呈現促銷和結果的回呼,但其中的樣式不能使用一般自訂功能指定。

resultsReadyCallback(gname, query, promos, results, div)
gname
搜尋元素的識別字串
query
產生這些結果的查詢
promos
促銷活動物件陣列,符合使用者查詢中相符的促銷活動。請參閱「促銷活動物件定義」。
results
結果物件的陣列。請參閱結果物件定義
div
在 DOM 中的 HTML div 放置在 Search Element 上,通常會放置促銷和搜尋結果。一般來說,搜尋元素 JavaScript 會負責填入這個 div,但這個回呼可能會選擇停止自動轉譯結果,並使用這個 div 來算繪結果。

如果這個回呼傳回 true 值,Search Element JavaScript 就會略過其網頁頁尾作業。

範例結果就緒回呼

範例結果就緒回呼中的 resultsReady 回呼範例會覆寫「簡單」的替換作業,取代促銷和結果的預設呈現方式。

結果就緒回呼範例
    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;
    };

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>

和搜尋啟動回呼一樣,上述方法還能夠將回呼放入 __gcse 物件中。

圖片/網頁搜尋結果顯示的回呼

系統會在搜尋元素 JavaScript 轉譯網頁頁尾前立即叫用這些回呼。使用範例包括回呼,加入搜尋元素無法顯示的結果內容,例如儲存這個核取方塊或未自動顯示的資訊,或是新增更多資訊按鈕的回呼。

如果「結果轉譯回呼」需要位於結果就緒回呼promosresults 參數中的資訊,可在兩者之間傳遞,如下所示:

callback(gname, query, promoElts, resultElts);
gname
搜尋元素的識別字串
query
搜尋字串。
promoElts
包含促銷的 DOM 元素陣列。
resultElts
包含結果的 DOM 元素陣列。

無傳回值。

轉譯結果回呼範例

範例結果轉譯回呼中的 resultsRendered 回呼範例會在每個促銷活動和結果中加上虛擬的 Keep 核取方塊。

轉譯結果回呼範例
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);
    }
  };

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>

如果結果轉譯回呼需要傳遞至結果就緒回呼的資訊,可在回呼之間傳送資料。以下範例顯示從 richSnippet 結果就緒回呼將評分值傳送至結果轉譯回呼的其中一種方式。

結果轉譯回呼完成工作範例回呼
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};
};
設定 __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>

更多回呼範例

如需其他回呼範例,請參閱更多回呼範例文件。

置頂查詢和結果屬性

使用 JSDoc 標記法是 promotionresult 物件的屬性。這裡列出可能存在的所有屬性。是否有很多屬性都取決於促銷活動或搜尋結果的詳細資料。

促銷屬性
{
  content: string,
  image: {
    height: number,
    url: string,
    width: number,
  },
  title: string,
  url: string,
  visibleUrl: string,
}
結果物件屬性
{
  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,
}

results 中的 richSnippet 具有物件陣列的鬆露類型。這個陣列中的項目值是由每項搜尋結果找到的結構化資料控制。例如,評論網站可能含有結構化資料,以便將這個陣列項目新增至 richSnippet

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

Programmable Search Element Control API (V2)

google.search.cse.element 物件會發布下列靜態函式:

功能 說明
.render(componentConfig, opt_componentConfig) 轉譯搜尋元素。

參數

姓名 說明
componentConfig 程式化搜尋元素的設定。指定下列項目:
  • div (字串|元素):<div>iddiv 元素,用於算繪程式化搜尋元素。
  • tag (字串):要轉譯的元件類型。(如有提供 opt_componentConfigtag 屬性的值必須為 searchbox)。允許的值如下:
    • search:搜尋框和搜尋結果,一同顯示
    • searchbox:程式化搜尋元素的搜尋框元件。
    • searchbox-only:一個獨立的搜尋框,與 opt_componentConfig 兩欄版面配置指定的搜尋結果區塊配對。
    • searchresults-only:獨立的搜尋結果區塊。搜尋字詞是由嵌入網址或程式輔助執行中的查詢參數所觸發。
  • gname (字串:(選填) 這個元件的專屬名稱。如未提供,程式化搜尋引擎會自動產生 gname
  • attributes (物件):鍵/值組合的選用屬性。支援的屬性。
opt_componentConfig 選用設定。第二元件設定引數。用於 TWO_COLUMN 模式,以提供 searchresults 元件。指定下列項目:
  • div (字串):<div>id 或用於算繪元素的 div 元素。
  • tag (字串):要轉譯的元件類型。如果提供 opt_componentConfigtag 屬性的值就必須是 searchresults。此外,componentConfig tag 屬性值必須為 searchbox
  • gname (字串:(選填) 這個元件的專屬名稱。如未提供,程式化搜尋引擎會自動為這個元件產生 gname。如有提供,這個欄位必須與 componentConfig 中的 gname 相符。
  • attributes (物件):採用鍵:值組合的選用屬性。 支援的屬性。
.go(opt_container) 轉譯指定容器中的所有搜尋元素標記/類別。

參數

姓名 說明
opt_container 容器,包含要轉譯的搜尋元素元件。指定容器 ID (字串) 或元素本身。如果省略這個值,則會轉譯網頁 body 標記中的所有程式化搜尋元素。
.getElement(gname) 透過 gname 取得元素物件。如果沒有,則傳回空值。

傳回的 element 物件包含下列屬性:

  • gname:元素物件的名稱。如果未提供這項政策,程式化搜尋引擎會自動為物件產生 gname更多資訊
  • type:元素的類型。
  • uiOptions:用於轉譯元素的最終屬性。
  • execute - function(string):執行程式輔助查詢。
  • prefillQuery - function(string):在不執行查詢的情況下,將查詢字串填入查詢字串。
  • getInputQuery - function():取得目前在輸入框中顯示的值。
  • clearAllResults - function():隱藏控制項,但隱藏搜尋框 (如果有的話) 以外的任何控制項。

下列程式碼會在 Search Element「element1」中執行「news」查詢:

var element = google.search.cse.element.getElement('element1');
            element.execute('news');
.getAllElements() 傳回所有成功建立的元素物件的對應,其中以 gname 索引鍵。