您可以使用 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-only 為 gname 「searchbox-only0」,而 gname 則為「seachbox-only1」,依此類推。請注意,在雙欄版面配置中,元件自動產生的 gname 為 two-column 。以下範例使用 gname storesearch 來連結 searchbox 元件與 searchresults 元件: <div class="gcse-searchbox" data-gname="storesearch"></div> <div class="gcse-searchresults" data-gname="storesearch"></div> 擷取物件時,如果有多個元件具有相同的 |
任何檔案 |
autoSearchOnLoad |
布林值 | 指定是否要在載入的網頁網址中嵌入查詢。請注意,網址必須包含查詢字串,才能執行自動搜尋。預設值:true 。 |
任何檔案 |
enableHistory |
布林值 | 如果設為 true ,系統會啟用瀏覽器「上一頁」和「轉寄」按鈕的記錄管理功能。觀看示範影片。 |
搜尋框 僅限搜尋框 |
queryParameterName |
字串 | 查詢參數名稱,例如 q (預設) 或 query 。這會嵌入網址中 (例如 http://www.example.com?q=lady+gaga)。請注意,如果單獨指定查詢參數名稱,並不會在載入時觸發自動搜尋。查詢字串必須包含網址,才能執行自動搜尋。 |
任何檔案 |
resultsUrl |
網址 | 結果網頁的網址。(預設值為 Google 代管的網頁)。 | 僅限搜尋框 |
newWindow |
布林值 | 指定結果頁面會在新視窗中開啟。預設值:false 。 |
僅限搜尋框 |
personalizedAds |
布林值 |
指定使用者是否已同意允許發布商與 Google 共用個人資訊,以用於個人化廣告。
預設: 使用範例: |
搜尋結果 僅限搜尋結果 |
mobileLayout |
字串 |
指定行動裝置是否應使用行動版面配置樣式。
預設: 使用範例: |
任何檔案 |
自動完成 | |||
enableAutoComplete |
布林值 | 必須先在程式化搜尋引擎控制台中啟用自動完成功能,才能使用這項功能。
true 會啟用自動完成功能。 |
任何檔案 |
autoCompleteMaxCompletions |
整數 | 可顯示的自動查詢數量上限。 | 搜尋框 僅限搜尋框 |
autoCompleteMaxPromotions |
整數 | 要在自動完成中顯示的促銷活動數量上限。 | 搜尋框 僅限搜尋框 |
autoCompleteValidLanguages |
字串 | 包含要啟用自動完成功能的語言清單 (以半形逗號分隔)。 支援的語言。 | 搜尋框 僅限搜尋框 |
分類標籤 | |||
defaultToRefinement |
字串 | 只有在程式化搜尋引擎控制台中建立分類標籤時才會顯示。指定要顯示的預設分類標籤。注意:Google 代管版面配置不支援這個屬性。 | 任何檔案 |
refinementStyle |
字串 | 可接受的值為 tab (預設) 和 link 。只有在停用圖片搜尋,或是已啟用圖片搜尋但已停用網頁搜尋功能時,系統才會支援 link 。 |
搜尋結果 僅限搜尋結果 |
圖片搜尋 | |||
enableImageSearch |
布林值 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 如為 |
搜尋結果 僅限搜尋結果 |
defaultToImageSearch |
布林值 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 如果為 |
任何檔案 |
imageSearchLayout |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 指定圖片搜尋結果網頁的版面配置。可接受的值為 |
搜尋結果 僅限搜尋結果 |
imageSearchResultSetSize |
整數、字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 指定圖片搜尋的搜尋結果大小上限。例如: |
任何檔案 |
image_as_filetype |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 將結果範圍限制在特定的副檔名內。 支援的擴充功能包括 | 任何檔案 |
image_as_oq |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 使用邏輯 OR 篩選搜尋結果。 如果想要系統顯示含有「term1」或「term2」的搜尋結果,請按照以下步驟操作: | 任何檔案 |
image_as_rights |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 根據授權篩選。 支援的值為 請參閱一般組合。 | 任何檔案 |
image_as_sitesearch |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 限制顯示特定網站的搜尋結果。 使用範例: | 任何檔案 |
image_colortype |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 限制搜尋範圍為黑白 (單色)、灰階或彩色圖片。支援的值為 | 任何檔案 |
image_cr |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 限制顯示來自特定國家/地區的文件。 | 任何檔案 |
image_dominantcolor |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 限制搜尋特定主要顏色的圖片。
支援的值為 | 任何檔案 |
image_filter |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 自動篩選搜尋結果。 支援的值:0/1 使用範例: | 任何檔案 |
image_gl |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用 圖片搜尋功能。強化來源國家/地區與參數值相符的搜尋結果。 | 任何檔案 |
image_size |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 傳回指定大小的圖片,其中 1 為 | 任何檔案 |
image_sort_by |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 使用日期或其他結構化內容將結果排序。 如要按照關聯性排序,請使用空白字串 (image_sort_by=")。 使用範例: | 任何檔案 |
image_type |
字串 | 您必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能。 僅搜尋特定類型的圖片。支援的值為 | 任何檔案 |
Google 網頁搜尋 | |||
disableWebSearch |
布林值 | 如果設為 true ,系統會停用網頁搜尋功能。通常必須在「程式化搜尋引擎」控制台中啟用
圖片搜尋功能時。 |
搜尋結果 僅限搜尋結果 |
webSearchQueryAddition |
字串 | 使用邏輯 OR 為搜尋查詢加入的額外字詞。
使用範例: |
任何檔案 |
webSearchResultSetSize |
整數、字串 | 結果集的大小上限。適用於圖片搜尋和網頁搜尋。預設選項取決於版面配置,以及程式化搜尋引擎是否設為搜尋整個網路或只搜尋特定網站。可接受的值如下:
|
任何檔案 |
webSearchSafesearch |
字串 |
指定是否要為網頁搜尋結果啟用安全搜尋。可接受的值為 off 和 active 。 |
任何檔案 |
as_filetype |
字串 | 將結果範圍限制在特定的副檔名內。如要查看 Google 可建立索引的檔案類型清單,請前往 Search Console 說明中心。 | 任何檔案 |
as_oq |
字串 | 使用邏輯 OR 篩選搜尋結果。
如果你想查看含有「term1」或「term2」的搜尋結果,請按照以下步驟操作: |
任何檔案 |
as_rights |
字串 | 根據授權篩選。
支援的值為 如要查看典型的組合,請參閱 https://wiki.creativecommons.org/wiki/CC_Search_integration。 | 任何檔案 |
as_sitesearch |
字串 | 限制顯示特定網站的搜尋結果。
使用範例: |
任何檔案 |
cr |
字串 | 限制顯示來自特定國家/地區的文件。
使用範例: |
任何檔案 |
filter |
字串 | 自動篩選搜尋結果。
支援的值:0/1 使用範例: |
任何檔案 |
gl |
字串 | 強化來源國家/地區與參數值相符的搜尋結果。
這個選項只能與語言值設定搭配使用。 使用範例: |
任何檔案 |
lr |
字串 | 限制顯示特定語言的文件搜尋結果。
使用範例: |
任何檔案 |
sort_by |
字串 | 使用日期或其他結構化內容將結果排序。屬性值必須是程式化搜尋「結果排序」設定中提供的其中一個選項。 如要按照關聯性排序,請使用空白字串 (sort_by=")。 使用範例: |
任何檔案 |
搜尋結果 | |||
enableOrderBy |
布林值 | 啟用依關聯性、日期或標籤排序搜尋結果。 | 任何檔案 |
linkTarget |
字串 | 設定連結目標。預設值:_blank 。 |
搜尋結果 僅限搜尋結果 |
noResultsString |
字串 | 指定沒有與查詢相符的結果時顯示的預設文字。 預設結果字串可用於顯示所有支援語言的本地化字串,而自訂字串則不是。 | 搜尋結果 僅限搜尋結果 |
resultSetSize |
整數、字串 | 結果集的大小上限。例如:large 、small 、filtered_cse 、10 。預設選項取決於版面配置,以及引擎是否設定為搜尋整個網路,還是只搜尋特定網站。 |
任何檔案 |
safeSearch |
字串 | 指定是否針對網頁和圖片搜尋啟用
安全搜尋。可接受的值為 off 和 active 。 |
任何檔案 |
回呼
回呼支援對搜尋元素初始化和搜尋程序的詳細控制。透過全域 __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 屬性設定的搜尋框預設為網頁圖片搜尋方塊,或者指定透過程式化的搜尋引擎提交的查詢,限定在僅限搜尋結果的元素中執行。
查看示範。
初始化回呼的角色是由 __gcse
的 parsetags
屬性值控制。
- 如果值為
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) {...};
搜尋啟動回呼範例
搜尋啟動回呼範例中的範例搜尋啟動回呼範例會根據時段,在查詢中新增 morning
或 afternoon
。
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 轉譯網頁頁尾前立即叫用這些回呼。使用範例包括回呼,加入搜尋元素無法顯示的結果內容,例如儲存這個核取方塊或未自動顯示的資訊,或是新增更多資訊按鈕的回呼。
如果「結果轉譯回呼」需要位於結果就緒回呼的 promos
和 results
參數中的資訊,可在兩者之間傳遞,如下所示:
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 標記法是 promotion 和 result 物件的屬性。這裡列出可能存在的所有屬性。是否有很多屬性都取決於促銷活動或搜尋結果的詳細資料。
{ 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) |
轉譯搜尋元素。 參數
|
||||||
.go(opt_container) |
轉譯指定容器中的所有搜尋元素標記/類別。
參數
|
||||||
.getElement(gname) |
透過 gname 取得元素物件。如果沒有,則傳回空值。傳回的
下列程式碼會在 Search Element「element1」中執行「news」查詢: var element = google.search.cse.element.getElement('element1'); element.execute('news'); |
||||||
.getAllElements() |
傳回所有成功建立的元素物件的對應,其中以 gname 索引鍵。 |