2012-01-25 9 views
2

私のサイトでGoogle Site Searchを使用していますが、これはすべてのブラウザでうまくいきます。しかし、自分の入力要素を使いたいので、トップナビゲーションにカスタム検索バーを置くことができました。私はそれを可能にするスクリプトを見つけました。そしてURLに "?q ="を追加することによって動作します。検索ランディングページのスクリプトは、クエリを受け取り、それを新しいGoogle検索フィールドに挿入します。Googleサイト検索でAndroidブラウザがクラッシュする

www.website.com/search/?q=query

これは、Androidモバイルデバイスを除くすべてのブラウザで動作します。URLは次のようなものを探してしまいます。ここで

は私のトップナビゲーションバーでの私のカスタム検索バーのためのスクリプトです:

<form onsubmit="return submitQuery()" id="search-form"> 
<input autocomplete="off" id="search" type="text" name="q" maxlength="100"> 
    <button type="submit" id="searchSubmit">Search</button> 
</form> 
<script> 
    function submitQuery() { 
     if ($('#search').val()=='Search') { 
     alert('Please enter a search term'); 
    return false; 
     } 
     else { 
      window.location = '/search/?q=' 
      + encodeURIComponent(
      document.getElementById('search').value); 
      return false; 
     } 
    } 
</script> 

そしてここでは、スクリプトが

<script src="http://www.google.com/jsapi" type="text/javascript"></script> 
<script type="text/javascript"> 
    google.load('search', '1', {language : 'en', style : google.loader.themes.MINIMALIST}); 
    /** 
    * Extracts the users query from the URL. 
    */ 
    function getQuery() { 
    var url = '' + window.location; 
    var queryStart = url.indexOf('?') + 1; 
    if (queryStart > 0) { 
     var parts = url.substr(queryStart).split('&'); 
     for (var i = 0; i < parts.length; i++) { 
     if (parts[i].length > 2 && parts[i].substr(0, 2) == 'q=') { 
      return decodeURIComponent(
       parts[i].split('=')[1].replace(/\+/g, ' ')); 
     } 
     } 
    } 
    return ''; 
    } 

    function onLoad() { 
    // Create a custom search control that uses a CSE restricted to 
    // code.google.com 
    var customSearchControl = new google.search.CustomSearchControl(
     'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); // this is the unique search engine ID 

    var drawOptions = new google.search.DrawOptions(); 
    drawOptions.setAutoComplete(true); 

    // Draw the control in content div 
    customSearchControl.draw('results', drawOptions); 
    customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); 

    // Run a query 
    customSearchControl.execute(getQuery()); 

    customSearchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF); 

// Maximum length of query is 100 characters 
$('.gsc-input').attr('maxlength', '100'); 

    } 

    google.setOnLoadCallback(onLoad); 
</script> 

どのように私はこれは上のクラッシュを停止するために得ることができ、私の検索ページにありますAndroid搭載端末ですか?私がこれをクリアする必要があるかどうかを教えてください。

+0

どのようにクラッシュですか?あなたはサーバーからいくつかの反応を得ましたか?ブラウザクラッシュ?あなたは/ q = valueの代わりにデフォルトのページを使ってみましたか? –

+0

実際、なぜそれが壊れていたのかを知りました。検索結果内のテキストに適用されているcustom @ font-faceフォントと関係があります。 –

答えて

1

多くの場合、Androidブラウザのクラッシュの原因はlogcatです。

関連する問題