iT邦幫忙

0

autocomplete功能

我知道的作法是透過ajax當keyup的時候去load一隻ajax把符合的結果送回來
所以當keyup時基本上一直在送值
可是我使用firebug去觀察Google跟Yahoo的搜尋,瀏覽器的狀態列有在變動
但Firebug並沒有catch到他們送出Ajax的行為
不知道有沒有人知道他們是怎麼做的?

Live HTTP headers 看看

1 個回答

14
fillano
iT邦超人 1 級 ‧ 2010-06-15 08:45:21
最佳解答

你仔細觀察啦。他是用動態載入script的方式來做的,不是用ajax。

我還沒開firefox,所以用chrome來觀察。你會看到每次有autocomplete動作時,都會動態載入 "http://clientX.google.com/complete/search?....." 這個網址的javascript,這個script會用autocomplete的資訊來呼叫window.google.ac.h()來產生autocomplete的效果。

看更多先前的回應...收起先前的回應...

每天都在用的google,完全沒留意到運作,
被fillano這麼一點,
原來這麼有趣:

<pre class="c" name="code">curl http://clients1.google.com.tw/complete/search?hl=zh-T9,25174\&q=har\&cp=5=17259
window.google.ac.h(["har",[["harvard university",0,"0"],["harrods",0,"1"],["harvard",0,"2"],["harry potter",0,"3"],["hario",0,"4"],["harvard business review",0,"5"],["harley davidson",0,"6"],["hartford",0,"7"],["harman kardon",0,"8"],["hare",0,"9"]]])

在那 q= 的地方塞東西,就馬上丟回這些東西;
好像可以怎麼來用這樣的機制嗎?
或者 google 是否有什麼 API 提供這樣的機制?

fillano iT邦超人 1 級 ‧ 2010-06-15 15:58:36 檢舉

google有公開的API:
<url=http://code.google.com/apis/ajax/>Googlf AJAX APIs</url>

但是裡面應該沒有google.ac...不過在javascript自己hack一個google.ac.h來跑應該不太難(不敢打包票,google的Javascript高手很多...)

chan15 iT邦新手 5 級 ‧ 2010-06-15 20:02:40 檢舉

這樣也是丟參數再回傳js載入後呈現選單
有點不明白多一個載入js的用意何在
照理說丟出去直接秀結果不就好了,為何要變成js載進來在變成結果

fillano iT邦超人 1 級 ‧ 2010-06-15 23:15:26 檢舉

ajax不能跨網域,動態載入script可以。

我要發表回答

立即登入回答