2011-09-26 106 views
1

我正在使用Google自定義搜索實現,該實現使用該選項將搜索結果加載到另一個頁面中的iframe中。谷歌自定義搜索嗅探和破壞移動搜索結果

使用這個網址作爲iframe的源(包括樣本查詢):

http://www.google.com/cse?cx=013856813593859657536:ss10an3on4k&cof=FORID:11&as_q=test

如果我在桌面瀏覽器中加載這個URL,自定義搜索返回結果。如果我的用戶代理是一個移動瀏覽器(目前遇到Safari iOS 4.3和Android的這個問題),我會得到一個帶有Javascript搜索框的空白頁面。這會導致我的用戶必須輸入兩次搜索條件。下面是返回的頁面截圖:

http://csuh.tv/0s032D1S3S0F3X161i16

谷歌似乎是用戶代理嗅探在這方面(BOO),並borking移動的結果。我需要(1)使用我在文檔中沒有找到的一些自定義搜索API選項來解決這個問題,或者(2)防止它們嗅探並搞砸移動搜索結果。


更新:我通過提供移動客戶端,簡單地用site:項提交到正規的谷歌搜索(即http://google.com/search)搜索框解決了這個。下面的解決方案也適用。

回答

1

當您在搜索框中輸入內容並按回車鍵時,您會得到一個不同的URL。你也許可以改變的iframe的src到下面的網址,它應該工作:

http://www.google.com/cse?cx=013856813593859657536:ss10an3on4k&cof=FORID:11&as_q=test#gsc.tab=0&gsc.q=test

作爲最後的手段,並假設它是按照谷歌的服務條款,你可以有iframe的點上一個頁面您的服務器充當代理來從Google獲取結果並輸出生成的HTML。這樣你就可以完全控制用戶代理。

www.mywebsite.com/mysearchproxy.php?search=test 
+0

到目前爲止,這似乎是一個很好的解決方法。它仍然在移動版本上顯示額外的搜索表單,但至少您不必鍵入查詢兩次。 – Karew