2013-10-31 51 views
1

我在瀏覽器中運行谷歌自定義搜索它工作正常。它甚至可以在Phonegap的模擬器中運行,但它會給出網絡錯誤,或者當它在android手機上運行時顯示空白屏幕。或出現此錯誤「file:///google.com/cse?q = ....無法找到。」自定義搜索引擎不能在Android手機上工作

我正在使用谷歌自定義搜索v2代碼。

+0

您正在使用哪種瀏覽器? – Devnook

+0

我正在通過phonegap運行..它應該在所有瀏覽器上運行...是否是phonegap的問題? –

+0

這是因爲當與PhoneGap一起使用時,源的位置是一個文件。因此,file是協議,但需要http(s)才能訪問該服務。 – Mario

回答

0

你爲自定義搜索的V2的代碼看起來是這樣的:

<script> 
    (function() { 
    var cx = 'ENGINE_ID'; 
    var gcse = document.createElement('script'); 
    gcse.type = 'text/javascript'; 
    gcse.async = true; 
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
     '//www.google.com/cse/cse.js?cx=' + cx; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(gcse, s); 
    })(); 
</script> 
<gcse:search></gcse:search> 

什麼它大概不會是創建這樣的標籤:

<script type="text/javascript" src="http://www.google.com/cse/cse.js?cx=ENGINE_ID"> 

和其他腳本之前將其插入你的頁面。因此,您可以完全跳過此代碼,並手動將上述標記(使用您的引擎ID)和<gcse:search></gcse:search>添加到您的HTML。如果仍然無法從file://連接到http://,請下載此腳本(http://www.google.com/cse/cse.js?cx=ENGINE_ID)並將其作爲本地JavaScript文件提供。

+0

在文件「filename.html?q = query」中嘗試給出錯誤「無法調用方法'執行'null'.. –

+0

我的js代碼是 <腳本類型= 「文本/ JavaScript的」 SRC = 「http://www.google.com/cse/cse.js?cx=」 ID「> –

+0

我的HTML是

0

我遇到了同樣的問題。 JavaScript中的一行更改導致file://錯誤消失:

// This line must take place before initializing GCSE 
window.IS_GOOGLE_AFS_IFRAME_ = true; 

在iOS和Android Cordova環境中均已驗證。

+0

在Java中的另一個修復:'@ Override' public void onReceivedError(final int errorCode,final String description,final String failingUrl){return; }' – audreyt