如果說google.search.SearchControl是全自動的搜尋控制容器,
那麼google.search.SearchForm就是純手工的搜尋控制容器。
相對於google.search.SearchControl擁有眾多的函式可以自動處理搜尋的過程;
google.search.SearchForm只提供了三種基本函式,
分別是setOnSubmitCallback、setOnClearCallback與execute。
其他進階的功能就得由開發者自行撰寫函式才能完成。
要使用google.search.SearchForm這個搜尋控制容器,
需要使用下列語法建構出該搜尋控制容器的物件。
var searchForm = new google.search.SearchForm(enableClear, element);
其中
enableClear –若為 ture 時,搜索輸入欄位就會包含一個清除搜尋結果的按鈕,否則將不會有清除搜尋結果的按鈕。
element – 通常是<div>元素。搜索輸入欄位會顯示在<div>區塊元素中。
以下是google.search.SearchForm三個函式的介紹:
setOnSubmitCallback(object, method)
本函式可以讓我們設定點選搜尋按鈕後所呼叫的物件(object)與函式(method),
此外搜尋輸入欄位的值也會被傳遞到要被呼叫的函式中。
setOnClearCallback(object, method)
本函式將會設定按下搜索輸入欄位的「清除」按鈕時被呼叫的物件(object)與函式(method)。
此外,搜尋輸入欄位的值也會被傳遞到要被呼叫的函式中。
execute(query)
利用execute函式,可以將所傳入的字串(query)自動進行submit的動作。
最後,
有興趣的朋友可以根據上述函式撰寫如下的範例程式碼,
這樣就可以瞭解google.search.SearchForm與上述三個函式的互動關係。
<html>
<head>
<title>My Google AJAX Search API Application</title>
<script src="http://www.google.com/jsapi?key=金鑰" type="text/javascript">
</script>
<script language="Javascript" type="text/javascript">
google.load("search", "1");
var searcher;
function OnLoad() {
//取得HTML 元素
var container = document.getElementById("searchcontrol");
// 建立搜尋控制容器
var searchControl = new google.search.SearchForm(true, container);
//設定按下搜尋按鈕會呼叫的函式
searchControl.setOnSubmitCallback(this,onFunction);
//設定按下取消搜尋按鈕會呼叫的函式
searchControl.setOnClearCallback(this,onFunction);
//執行搜尋
searchControl.execute("test");
}
//按下搜尋按鈕被呼叫的函式
function onFunction(form)
{
//彈出視窗顯示使用者所輸入的搜尋關鍵字
window.alert(form.input.value);
}
//HTML載入時呼叫OnLoad函式
google.setOnLoadCallback(OnLoad);
</script>
</head>
<body>
<div id="searchcontrol">Loading...</div>
</body>
</html>
PS:如果網友對Google API有興趣,
也可以參考我所撰寫的【Google APIs程式工具錦集】一書。

很棒的語法說明,感謝分享
謝謝andy的稱讚..希望有幫助喔...^o^
有深度 佶也看 不太懂
歡迎留言討論程式.. 不然....就多看一些遊記跟食記好嚕XDDDD
*****
*****
*****
*****
莊先生您好,請教一下,您的範例3-41.html是否有錯誤?我在本機都及自己的網站上都沒辦顯示出來,畫面一片空白,不管Google Maps API 密鑰是否有改成我的,顯示都一樣,麻煩幫我確認一下,感激不盡。
Google把API的函式改版了...把GeoXml改成GGeoXml 即可運作
莊大哥您好, 想請教您是否有辦法將使用google API搜索到的結果(URL的形式) 抓取下來並以資料庫儲存呢?
我認為是可以的.. 但是你應該併用curl或其他技術才行.
莊老師您好: 我試了用此方法來搜尋公司的網頁內容,是用siteSearch.setSiteRestriction 的方法,可是出來的結果,和我直接在 google下搜尋公司的網頁內容是不一樣的, 在 google直接下搜尋的內容較多喔!不知老師是否知道原因為何?是否是我的寫法有問題或Google的問題? 謝謝.
不瞭解你直接在 google下搜尋公司的網頁內容是指? 如果只是直接打關鍵字後搜尋 那一個是在網海搜尋 一個是在貴公司網站中搜尋 結果自然不同
不好意思,我說的不夠清楚, 我說的在google直接下search 是指,若要找abc.com 公司的 xyz 資料 就在google 下指令如 xyz site:abc.com , 它就會只search 這個abc.com 網站的 xyz 資料,就會和我使用的方法內容是一樣的.(我是這樣想的),只是結果有點差異,所以就有這樣的問題出現.若老師願意幫我看一下的話,我現在測試的位置為 http://www.lumos.com.tw/Gsearch.html 直接按搜尋的結果和 在 google下指令 FOV site:www.lumos.com.tw 再搜尋的結果不一樣, 若老師有空看一下,小妹真是感激不盡!! 感恩.
剛試了一下 結果真的不太一樣 @@!
近日在看calendarAPI時,以您書中第五章的範例執行結果如下,請問是哪裡的問題呢 感謝您解惑 ------執行後 螢幕顯示如下----- 無法顯示您要求的網頁。有另一個網站要求存取您的 Google 帳戶,但傳送的格式有誤。請在收到此訊息後聯絡您嘗試使用的網站,通知她們相關錯誤。詳細的錯誤訊息如下: "next" 參數錯誤或遺失。
請問有把檔案放到web server上嗎? 不是自己電腦的localhost喔.?
莊老師您好: 我最近想要學習有關於Google API的相關技術 其中我看到有一個 "HeyStaks" 的系統( http://www.heystaks.com/) 此系統直接將結果直接嵌入在 Google的搜尋結果的頁面當中 想請問莊老師不曉得他是運用什麼樣的技術(因為我感覺似乎和Google AJAX Search API 有些不同),謝謝老師 ^^
這個嘛.在大概看一下的狀況 我覺得它有可能還是有用到Google AJAX API, 不過也可能單純運用javascript動態改變搜尋的呈現
莊老師您好: 先謝謝老師您的回覆,此外很不好意思我還有個問題想請教老師。因為老師您說還是可以用Google AJAX API或javascript來做到這樣的效果。 可是要如果將這些方法,直接嵌入在google原本的搜尋頁面之上呢?昨天老師的這本API書我剛買到,稍微翻過之後,發現似乎都是建立在自己所寫的網頁底下,因此我比較納悶的是要如何將這些技術直接嵌入在google網頁上。 很不好意思,我的問題有點多..,不管如何還是先謝謝老師您。
為了解答你的問題 特地去註冊這個網站 它有三種方式: firefox extension, chrome extension, iPhone app 這三種都可以將原本瀏覽器或手機app的搜尋結果客製化 並不是直接對在google server上的頁面動手腳